从本机代码卸载.NET COM Interop库

时间:2015-11-02 08:07:07

标签: .net dll com com-interop

我有一个包含ComVisible(true)类的C#.NET DLL。我可以毫无问题地注册/调用/取消注册这个库。

然而,我想要的场景涉及一个本机进程将DLL解压缩到一个临时文件夹,注册它,运行一些函数,取消注册,最后删除DLL,所有这些都在相当短的时间内完成。

(使用免注册COM会很好,但我无法控制DLL位置或清单。)

这一切都很好,直到删除部分。似乎框架中的某些东西会在进程退出之前锁定DLL,即使我已经释放了对任何对象的所有引用并调用了CoFreeUnusedLibraries

还有其他一些技巧可以让本机代码完全卸载CLR和/或释放COM程序集(及其任何引用的程序集)吗?或者也许在一个单独的过程中运行它?

请注意,我没有直接访问本机代码,只能在其上面创建一个脚本层,因此我可以进行一些额外的WinAPI调用,但不是例如。更改传递给CoCreateInstance等的标志。

0 个答案:

没有答案