C# 在不首先注册COM服务的情况下构建.NET COMInterop项目
我正在构建一个与COM服务(.exe)交互的C#UI。VS2005 COM项目输出一个有效的类型库(TLB),该类型库由C#项目引用。但是,VS2005 C#项目坚持要注册服务才能构建C#项目,即使在使用OLE对象查看器检查时,typelib似乎完全有效 如果可能的话,我们不希望在构建服务器上注册该服务。此外,调试生成无法将COM对象注册为服务,因为这会使调试变得更困难,尤其是启动代码(不能使用F5-Start调试) 我应该寻找什么才能让它工作?我需要只注册TypeLib吗?如果是这样,为什么COMInterop会坚持注册服务或TLB以正确构建(而且,在Win2003和VS2005上是否有用于此的命令行工具)C# 在不首先注册COM服务的情况下构建.NET COMInterop项目,c#,.net,c++,windows,com,C#,.net,C++,Windows,Com,我正在构建一个与COM服务(.exe)交互的C#UI。VS2005 COM项目输出一个有效的类型库(TLB),该类型库由C#项目引用。但是,VS2005 C#项目坚持要注册服务才能构建C#项目,即使在使用OLE对象查看器检查时,typelib似乎完全有效 如果可能的话,我们不希望在构建服务器上注册该服务。此外,调试生成无法将COM对象注册为服务,因为这会使调试变得更困难,尤其是启动代码(不能使用F5-Start调试) 我应该寻找什么才能让它工作?我需要只注册TypeLib吗?如果是这样,为什么C
如果我没记错的话,有一次我构建了一个引用Win2003 firewall COM对象的C#web服务,但我们在Win2000(它没有这样的东西)上构建它,只需引用TLB文件,而不需要注册,所以我不明白为什么现在会出现问题。您需要使用工具创建互操作程序集。并在项目中添加对此程序集的引用,而不是typelib。在这种情况下,构建不需要注册com服务器
如果不想再提供另一个程序集,可以使用从生成的互操作程序集提取接口描述,并将其作为源文件包含到项目中。通过向COM服务添加-regtypelib命令解决了这一问题,该命令调用AtlRegisterTypeLib函数,但不注册服务。次优,因为它将在构建服务器上保留注册表项,但速度快且有效。对您的答案进行了投票,但只注册typelib更容易。