1

我有一个使用 COM 服务器的 .NET 应用程序。COM 服务器在我运行它的机器上注册,所以当我的代码到达new MyInterop.SomeObject()适当MyComServer.exe的位置时启动。

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

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

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

有没有更合适的?

4

2 回答 2

1

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

COM 具有通过 ROT(运行对象表)附加到服务器运行实例的机制。但是,这不是您以后可以附加的东西,它必须得到服务器的明确支持。如果您确实必须选择修补服务器,那么请考虑将其设置为进程内服务器。麻烦少了很多。

于 2011-12-06T16:20:22.810 回答
0

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

于 2011-12-06T15:10:42.670 回答