我一直在MEF上使用the master theorem教程并即时加载程序集,而且在大多数情况下,它似乎都有效。然而,只有一个问题。要使用新版本替换现有程序集并让影子副本和MEF选择更改,您必须实际删除原始,然后复制新版本。您不能简单地将新版本拖到监视文件夹中并使其正常工作。
来自文章:
double runner.Recompose()调用的原因是DLL的Exports签名与先前版本匹配,并且MEF没有看到更改,因为它没有查看FileInfo的差异。然后,它告诉AppDomain DLL也没有改变,并且ShadowCopyFiles没有启动进行更改。简单的解决方法是删除原始,重构,放置新的,并重新组合一次。我能看到的唯一缺点是在重构过程中应用程序的性能会暂时下降。
他们唯一的缺点就是错过了我认为不能拖放覆盖原件的更大的缺点。
这有什么办法吗?是否有可能首先检测并覆盖和删除原始文件?或者其他一些方法迫使它注意到差异?