gpt4 book ai didi

mef - 更改使用 MEF 加载的 Dll

转载 作者:行者123 更新时间:2023-12-02 06:45:17 26 4
gpt4 key购买 nike

我正在使用 MEF 和 System.ComponentModel.Composition.dll 来加载一些 dll。

我正在做类似的事情:

AggregateCatalog catalog = new AggregateCatalog(new AssemblyCatalog(Assembly.GetExecutingAssembly()), new DirectoryCatalog(directory));
_container = new CompositionContainer(catalog);
_container.ComposeParts(this);

导入我的 dll。

一段时间后,我想更新我的 dll,但如果我尝试删除它,我会被拒绝访问,因为它已被程序使用。

如何释放该 dll、替换为新的 dll 并再次加载该 dll? (无需关闭程序)

预先感谢您的帮助

最佳答案

您需要在 AppDomain 中启用卷影复制,这会强制应用程序的行为类似于 Web 应用程序,其中可执行内容不是从源位置运行,而是从临时位置运行。

您遇到的唯一问题是

  1. 使用过时的方法AppDomain.CurrentDomain.SetShadowCopyFiles(),将其强制作用于当前域。不建议这样做,因为这已被弃用,取而代之的是:
  2. 创建 AppDomain 时使用AppDomainSetup.ShadowCopyFiles = "true";。然后,您需要推迟在其他 AppDomain 中执行程序集。也许是这个form post可以帮忙吗?

我不确定您是否可以通过应用程序配置启用卷影复制...

关于mef - 更改使用 MEF 加载的 Dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4595304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com