我正在使用CodeDOM来动态生成类。我正在指定输出程序集,因此使用类名创建.dll。但是,这些类需要使用相同的类名进行更新,因此将更新类,而.dll将不会更新(因为它不能覆盖以前的.dll)。我想知道是否有办法调用一个方法来删除这个.dll然后当我生成新类时,新的.dll会出现在那里。我知道我可以使用app域,但问题是我需要经常更新类,我认为性能会受到很大影响。
答案 0 :(得分:2)
当且仅当该DLL文件当前未打开时,您可以删除/重新创建DLL。如果一个或多个应用程序域将DLL代码加载到域中,则它是开放的。
无法从应用程序域卸载DLL。您必须卸载应用程序域以卸载它引用的任何DLL。
更新
我不了解Roslyn根据@SLaks建议编译内存的能力。如果您没有绑定物理DLL,请查看this article。