在处理它们自己的子目录中的插件程序集时,有一个众所周知的问题,即这些程序集一旦尝试从它们的子目录加载它们各自的依赖项就无法加载。一种解决方案是在 AppDomains 中加载插件,这些插件在初始化时已PrivateBinPath
在其对象中设置。AppDomainSetup
但是,这会导致有关编组/跨 AppDomain 通信的其他困难,特别是如果插件应该提供一些 GUI。
当安全方面的优先级较低时(非关键实用程序应用程序,由于错误插件导致的崩溃没有严重问题),我有以下想法:在应用程序启动时,应搜索所有插件目录,并新建一个应创建 AppDomain,在其 bin 路径中包含这些目录。然后,整个应用程序及其 GUI 与所有插件一起在新的 AppDomain 中运行。
在给定的情况下,是否有任何理由避免该解决方案?或者是否有任何原因导致该解决方案甚至不可行?