有没有办法删除.dll文件而不使用单独的应用程序域?

时间:2015-07-27 20:59:18

标签: c# assemblies appdomain codedom

我正在使用CodeDOM来动态生成类。我正在指定输出程序集,因此使用类名创建.dll。但是,这些类需要使用相同的类名进行更新,因此将更新类,而.dll将不会更新(因为它不能覆盖以前的.dll)。我想知道是否有办法调用一个方法来删除这个.dll然后当我生成新类时,新的.dll会出现在那里。我知道我可以使用app域,但问题是我需要经常更新类,我认为性能会受到很大影响。

1 个答案:

答案 0 :(得分:2)

当且仅当该DLL文件当前未打开时,您可以删除/重新创建DLL。如果一个或多个应用程序域将DLL代码加载到域中,则它是开放的。

无法从应用程序域卸载DLL。您必须卸载应用程序域以卸载它引用的任何DLL。

更新

我不了解Roslyn根据@SLaks建议编译内存的能力。如果您没有绑定物理DLL,请查看this article