如何load/unload组装?

How to load/unload assembly?

我正在开发一个 C# 解决方案,我需要在该解决方案中编译一个项目,加载它的程序集并探索它的类型。

我的问题是,一旦我加载程序集,我就无法卸载它,所以如果我想重新编译我正在探索其程序集的项目,我不得不关闭 VS 并重新打开它。我读过在不同的 AppDomain 中加载程序集可以解决我的问题,但是我失去了 LoadFrom 方法并且我对自动加载依赖项感兴趣。

所以,我的问题是:如何加载程序集及其依赖项、探索其类型然后卸载它?

如果您只是需要探索它而不能执行某些操作,您可以使用像 Mono.Cecil 这样的第三方来读取您的程序集作为数据。

我推荐https://github.com/0xd4d/dnlib which is much powerful to compile or decompile or u can use dnspy https://github.com/0xd4d/dnSpy

我最终以丑陋的方式解决了它:将程序集文件复制到一个临时文件夹并从那里打开它。这样我就可以探索它而无需保持原始程序集打开并在尝试重新编译时到处抛出错误。

感谢大家抽出时间来帮忙。