问题陈述:实现一个允许相关程序集被覆盖的插件系统(避免文件锁定)。在 .Net 中,可能不会卸载特定程序集,只能卸载整个 AppDomain。
我发布这个是因为当我试图解决这个问题时,每个解决方案都提到了使用多个 AppDomain。多个 AppDomain 很难正确实现,即使是在项目开始时进行架构设计时也是如此。
此外,AppDomains 对我不起作用,因为我需要跨域传输类型作为 Speech Server worfklow 的 InvokeWorkflow 活动的设置。不幸的是,跨域发送类型会导致程序集被注入本地 AppDomain。
此外,这与 IIS 有关。IIS 有一个 Shadow Copy 设置,允许在加载到内存时覆盖正在执行的程序集。问题是(至少在 XP 下,没有在生产 2003 服务器上测试)当您以编程方式加载程序集时,卷影副本不起作用(因为您正在加载 DLL,而不是 IIS)。