繁体   English   中英

如何装卸组件?

[英]How to load/unload assembly?

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

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

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

如果只需要浏览它而不能执行某些操作,则可以使用Mono.Cecil之类的第三方将程序集读取为数据。

我确实建议使用https://github.com/0xd4d/dnlib ,它可以强大地进行编译或反编译,或者您可以使用dnspy https://github.com/0xd4d/dnSpy

我最终以丑陋的方式解决了这个问题:将程序集文件复制到一个临时文件夹,然后从那里打开它。 这样,我可以探索它而无需保持原始程序集的打开状态,并且在尝试重新编译时不会引发错误。

感谢大家抽出宝贵的时间来提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM