1

MEF在基于插件的 ASP.NET 应用程序中使用。在复制到插件文件夹后,会自动加载File System Watcher与任何新插件的连接。Container.Refresh()

问题是当我想删除或替换加载的插件时。它被锁定,w3wp无法删除。我读过Shadow Copy但找不到好的例子或文章。

4

2 回答 2

1

尝试将插件文件夹添加到AppDomainSetup.ShadowCopyDirectories。此属性是以分号分隔的目录列表,其中包含应通过卷影副本加载的程序集。

通常您还需要将AppDomainSetup.ShadowCopyFiles设置为,"true"但我认为这已经是 ASP.NET appdomains 的默认设置。

但是,请注意,加载新版本的插件不会神奇地卸载旧版本。唯一的方法是卸载包含它的 AppDomain。由于这需要您在单独的应用程序域中加载插件,这可能比它的价值更麻烦。

停止服务、更新 DLL 并重新启动可能更简单、更安全、更有效。

于 2011-06-12T12:06:16.870 回答
0

确保正确清理所有非托管资源。听起来您可能已经打开了一个文件流,但没有正确关闭/处理它,这可能会被最初使用它的进程锁定。using有关此处声明的 更多信息:http: //www.blackwasp.co.uk/UsingStatement.aspx

于 2011-06-12T12:18:19.583 回答