RegAsm dll没有注册类型

我试图使用RegAsm注册.dll。 它是一个.NET 2.0 DLL。 所有课程都是公开的,ComVisible是真实的。 我仍然得到RA0000:没有类型被注册错误。 下面是代码和assemblyinfo。 任何帮助都会很棒,谢谢!

STARTelnet.cs

/** *Steven T. Norris Created: 3/27/2012 *Last Updated By: Steven T. Norris Last Updated On: 3/27/2012 * */ using System; using MinimalisticTelnet; using System.Net.Sockets; /** * @brief Used to connect to, read, and respond to a STAR terminal session. * * Steven T. Norris Created: 3/27/2012 */ namespace STARTelnet { /** * Class used to connect to, read, and respond to a STAR terminal session. */ public class STARConnection { private TelnetConnection conn; private string output; private string command; private string prompt; /** * Instantiates new STARConnection. 
* Recommended login timeout is 2000.
* Recommended overall timeout is 500.
* Throws SocketException, PromptException, LoginException * * @param [in] string username:Username for login * @param [in] string password:Password for login * @param [in] int loginTimeout:timeout milliseconds for login * @param [in] int overallTimeout:timeout milliseconds for session */ public STARConnection(string username, string password, int loginTimeout, int overallTimeout) { output = ""; conn = new TelnetConnection("HOSTHOSTHOST", 23); this.SetTimeout(overallTimeout); try { output = conn.Login(username, password, loginTimeout); if(output.Contains("You entered an invalid login name or password")) { throw new LoginException("Failed to login"); } this.ParsePrompt(); } catch(Exception e) { if(e.Message.Contains("login prompt")) { throw new PromptException("Login", "Could not find login prompt"); } else if(e.Message.Contains("password prompt")) { throw new PromptException("Password", "Could not find password prompt"); } else { throw e; } } } /** * Sets the timeout for the session in milliseconds * @param [in] int timeout:timeout for session */ public void SetTimeout(int timeout) { conn.MainTimeOutMs = timeout; conn.TimeOutMs = timeout; } /** * Gets the current timeout for the session in milliseconds * @param [out] int:timout for session */ public int GetTimeout() { return conn.TimeOutMs; } /** * Writes a command to the STAR session * @param [in] string command:command to write */ public void Write(string command) { this.command = command; conn.Write(this.command); this.command = this.command.Replace("\n", "{newLine}"); } /** * Writes a command followed by a new line (\n) to the STAR session * @param [in] string command:command to write */ public void WriteLine(string command) { this.command = command; conn.WriteLine(this.command); this.command += "{newLine}"; } /** * Reads output from STAR session. Assumes no data within given timeout denotes end of stream * @param [out] string:output from STAR session */ public string Read() { output = conn.Read(); this.ParsePrompt(); return output; } /** * Reads output from STAR session with timeout changed for only this read. Assumes no data within * timeout denotes end of stream. * @param [in] int timeout:timeout for this read only * @param [out] string:output from STAR session */ public string Read(int timeout) { int temp = this.GetTimeout(); this.SetTimeout(timeout); this.Read(); this.SetTimeout(temp); return output; } /* * Parse prompt from output */ private void ParsePrompt() { prompt = output.Substring(output.LastIndexOf("\n") + 1); } /** * Gets output from last read * @param [out] string:output from last read */ public string GetOutput() { return output; } /** * Gets last command entered * @param [out] string:last command entered */ public string GetCommand() { return command; } /** * Gets prompt from last read * @param [out] string:last prompt */ public string GetPrompt() { return prompt; } /** * Checks for connection * @param [out] bool:connection status */ public bool IsConnected() { return conn.IsConnected; } } /** * Exception for failed logins */ class LoginException: Exception { private string offender = ""; public LoginException() : base() { } public LoginException(string message) : base(message) { } /** * Creates exception * @param string offender:element causing exception * @param string message:exception message */ public LoginException(string offender, string message) : base(message) { this.offender = offender; } /** * To String method for getting exception string * @param [out] string:string representation of exception */ public override string ToString() { if(offender == "") { return this.GetType() + ": "+this.Message+"\n"+this.StackTrace; } else { return "Incorrect login: " + offender + "--" + this.Message + "\n" + this.StackTrace; } } } /** * Exception for failed STAR prompts */ class PromptException: Exception { private string prompt = ""; public PromptException() : base(){ } public PromptException(string message) : base(message){ } /** * Creates exeption * @param string prompt:prompt causing exception * @param string message:exception message */ public PromptException(string prompt, string message) : base(message) { this.prompt = prompt; } /** * To String method for getting exception string * @param [out] string:string representation of exception */ public override string ToString() { if(prompt == "") { return this.GetType() + ": " + this.Message + "\n" + this.StackTrace; } else { return "Prompt failed: " + prompt + "--" + this.Message + "\n" + this.StackTrace; } } } }

AssemblyInfo.cs中

 using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("STARTelnet")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("COMPANY")] [assembly: AssemblyProduct("STARTelnet")] [assembly: AssemblyCopyright("Copyright © COMPANY 2012")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(true)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("d7ae512d-c840-4ebc-8057-73a10f286225")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] 

我认为你的问题是你没有默认的构造函数。 请添加以下代码并致电。 这是基于MSDN的指导 。

调用代码(当然在COM中会有所不同)

 var connection = new STARConnection(); connection.Initialize(username, password, loginTimeout, overallTimeout); 

新规范

 ///  /// Default constructor needed for COM. Set parameters with properties. ///  public STARConnection() { } public Initialize(string username, string password, int loginTimeout, int overallTimeout) { output = ""; conn = new TelnetConnection("HOSTHOSTHOST", 23); this.SetTimeout(overallTimeout); try { output = conn.Login(username, password, loginTimeout); if(output.Contains("You entered an invalid login name or password")) { throw new LoginException("Failed to login"); } this.ParsePrompt(); } catch(Exception e) { if(e.Message.Contains("login prompt")) { throw new PromptException("Login", "Could not find login prompt"); } else if(e.Message.Contains("password prompt")) { throw new PromptException("Password", "Could not find password prompt"); } else { throw e; } } }