问题陈述:实现一个允许覆盖相关程序集的插件系统(避免文件锁定)。在.Net中,特定程序集可能不会被卸载,只有整个AppDomain可能被卸载。如何在不使用AppDomains的情况下实现.net插件?
我发布这个,因为当我试图解决问题时,每个解决方案都提到使用多个AppDomains。即使在项目开始时构建,多个AppDomain也很难正确实施。
另外,AppDomain对我无效,因为我需要跨域传输Type作为Speech Server worfklow的InvokeWorkflow活动的设置。不幸的是,跨域发送类型会导致程序集被注入本地AppDomain。
此外,这与IIS有关。 IIS具有Shadow Copy设置,允许执行的程序集在加载到内存时被覆盖。问题是(至少在XP下,没有在生产2003服务器上测试),当你以编程方式加载程序集时,阴影副本不起作用(因为你正在加载DLL而不是IIS)。
我想这意味着你仍然必须重新启动使用新的插件一旦被替换磁盘上的应用程序?我曾经有过这样的印象:即使你重新加载了组件,一旦类型被加载,它也不能被改变。 – 2009-01-20 01:49:04