如何加载/卸载组件?

时间:2017-04-13 20:01:55

标签: c# reflection .net-assembly

我正在研究C#解决方案,我需要在解决方案中编译项目,加载其程序集并探索其类型。

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

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

3 个答案:

答案 0 :(得分:2)

如果您只是需要在不能执行某些操作的情况下进行探索,则可以使用Mono.Cecil之类的第三方将您的程序集作为数据读取。

答案 1 :(得分:0)

我建议https://github.com/0xd4d/dnlib编译或反编译功能强大,或者你可以使用dnspy https://github.com/0xd4d/dnSpy

答案 2 :(得分:0)

我最终以丑陋的方式解决它:将程序集文件复制到临时文件夹并从那里打开它。这样我就可以在不保持原始程序集打开的情况下进行探索,并在尝试重新编译时抛出错误。

感谢大家花时间提供帮助。