我已经成功地使用免注册COM将COM组件加载到我的.Net进程中。突然发生了一些变化(当我出去吃午饭时,似乎是:-),装载过程停止了。
而在我的COM组件正确加载之前,现在我得到了一个FileNotFoundException。
运行ProcMon来探究发生了什么,我发现加载程序正在注册表中查找CLSID,并发现组件已经注册。然后它查看注册的路径,发现dll不在那里。
有人能告诉我,当我使用免注册COM配置组件时,加载程序为什么要去注册表查找组件吗?我以为清单会优先于注册表,但我找不到任何关于这方面的文档。
事实证明罪魁祸首是Visual Studio宿主进程。当涉及到这一点时,应用程序的清单文件(指定COM依赖项)不会被读取。
因此,简单的解决方案是禁用托管进程。