如何指定我的.NET互操作应该使用哪个COM服务器?

时间:2011-12-06 14:23:02

标签: .net com interop com-interop com-server

我有一个使用COM服务器的.NET应用程序。 COM服务器已在我运行它的机器上注册,因此当我的代码到达new MyInterop.SomeObject()时,相应的MyComServer.exe就会启动。

但是,正在调试时,我有几个MyComServer.exe的副本驻留在具有不同配置文件的不同文件夹中。我想指定我的应用应加载哪个。

我知道的两个解决方法是:

  • 我可以在每次使用前重新注册(MyComServer.exe /regserver)。但我不喜欢使用全局解决方案解决本地问题。
  • 我手动启动MyComServer.exe(然后作为独立应用程序运行),COM基础架构将重用此现有流程。但那不是很自动化。

有什么更合适吗?

2 个答案:

答案 0 :(得分:1)

COM服务器.exe由新的MyInterop.SomeObject()调用启动。毫无疑问你有很多.exe的运行,因为你在调试时终止了程序,不允许.NET正常关闭并减少终结器线程中的引用计数。 COM没有机制来清理这些丢失的引用。只需使用Taskmgr.exe,Process选项卡即可终止正在运行的实例。

COM有一种机制通过ROT(运行对象表)连接到正在运行的服务器实例。然而,这不是你可以在以后解决的问题,它必须由服务器明确支持。如果您必须选择修改服务器,请考虑将其设置为进程内服务器。麻烦少了。

答案 1 :(得分:0)

您可以尝试根据调试版本动态创建配置文件。