我有一个应用程序在隔离部署中使用本机 COM dll 中的一些类。
简化:
在运行时,我将带有清单文件的 dll 下载到某个目录而不注册它。
然后我创建一个指向该目录的激活上下文,然后从 dll 创建类的实例。
假设创建 A 类,一段时间后创建 B 类。
在这个流程中,一切都很顺利。
当我将应用程序更改为 WinForm 时,问题就开始了。当按下“按钮 1”时,我像以前一样创建激活上下文,然后创建类 A 的实例。这很好,流程返回到我的 WinForm。但是,当按下“按钮 2”时,我无法创建 B 类。我收到一个异常,说找不到该类!
所以看起来 WinForm 以某种方式弄乱了我的激活上下文。
这是为什么?那里发生了什么?
有办法解决吗?
几点注意事项:
我尝试使用 sxstrace.exe 跟踪激活上下文创建,但它只记录了我的激活上下文创建。
我尝试注释掉 Application.EnableVisualStyles() 但它没有帮助。
如果我用 create 和 destroy Activation Context 包装对我的 dll 的每个调用,它可以工作,但我自然不想去那里......