构建.NET COMInterop项目没有首先注册COM服务(Building .NET COMIn

2019-07-29 05:51发布

我建立一个C#UI与一个COM服务(.exe)的互动。 该VS2005 COM项目输出有效类型库(TLB),其由C#项目中引用。 然而,VS2005 C#项目坚持服务,以打造C#项目,即使当与OLE对象查看器检查类型库出现完全有效的注册。

我们宁愿不如果可能,生成服务器上注册的服务。 另外,调试版本不能注册COM对象作为一种服务,因为这使得在一般的调试,特别是启动代码,更难(不能用F5 - 启动调试)。

我应该怎样寻找,为了得到这个工作? 我是否需要注册只是该类型库? 如果是这样,为什么会COMInterop坚持有为了建立正确注册的服务或TLB(和,是有这样的命令行工具对Win2003的与VS2005)?

如果我没有记错,曾经APON一段时间我建这所引用的Win2003的防火墙COM对象C#的Web服务,但我们建立了它在Win2000(不具有这样的事情),只需通过引用,无需注册TLB文件,所以我不明白为什么这个现在应该是一个问题。

Answer 1:

您需要创建互操作程序集使用tlbimp.exe是工具。 而在你的项目,而不是类型库添加引用该组件。 在这种情况下,建筑物将不需要注册的COM服务器。

如果你不想出货另一个组件,你可以从生成互操作程序集使用提取接口描述反射器 ,并将其纳入到项目的源文件。



Answer 2:

通过添加-regtypelib命令到COM服务,它调用AtlRegisterTypeLib功能,但不注册该服务解决了这个。 次优,因为它会留下在构建服务器系统登录项,但很快和它的作品。



文章来源: Building .NET COMInterop project without first registering the COM service