我一直在按照一组教程 (like this one) 创建一个简单的 COM 服务器对象。
假设我有一个简单的 hello world:
[ComVisible(true)]
[Guid("392930B3-9CD0-4247-8C69-83168D1C8F77")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("nathanr.HellowWorldCom")]
class HelloWorldCom : IHelloWorldCom
{
public int HelloWorld()
{
Console.WriteLine("Hello World!");
return 1;
}
}
界面简单:
[ComVisible(true)]
[Guid("C08205BE-1393-4070-AE57-FA47F0D653C3")]
interface IHelloWorldCom
{
[DispId(1)]
int HelloWorld();
}
当然,不能忘记 AssemblyInfo.cs
文件:
...
[assembly: ComVisible(true)]
[assembly: AssemblyKeyFile("HelloWorldCOM.snk")]
...
问题是当我构建 HelloWorldCom.dll
并尝试注册它时,regasm
只是对我吐舌头:
RegAsm : warning RA00000 : No types were registered.
为了掩盖我的基础,我破解了 Regedit
并搜索了 ProgID
。它不在那里,老实说这并不奇怪。
我是否漏掉了一些明显的东西?
整个测试项目是一个更大的(实际上有用的)设置的一部分,该设置也未能注册。
最佳答案
这将是一个很长的答案:添加public
public class HelloWorldCom : IHelloWorldCom
关于c# - 创建和注册 COM 服务器对象 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822485/