我有以下部署结构:
deployment/
Service1.dll
Service2.dll
Service3.dll
Common.dll
Host.exe
在启动期间,3 个服务 dll 被复制到一个临时位置,我用Assembly.LoadFrom
这种方式显式加载它们。我的代码会查找更改,deployment
并且因为这些程序集加载到它们自己的 AppDomain 中,所以我可以关闭它们,复制新版本,然后重新启动它们。这很好用。
我遇到的问题是所有这 3 个服务都依赖于Common.dll
(主主机可执行文件不依赖)。在启动过程中,这个通用 dll也被复制到临时位置,但主机解析的是deployment
在我的临时位置而不是在我的临时位置。
我已经尝试使用AppDomainSetup.PrivateBinPath
并将其指向我的临时位置,但它仍然解析为部署文件夹中的那个。
有什么方法可以强制 CLR 先查看我的临时文件夹,然后再尝试在部署文件夹中解决它(那里有其他依赖项,但没有我需要“隐藏”的,因为它是)。
EDIT: For clarification, if common.dll
is modified, all the services are unloaded first to release the dependency on the common dll before copying and then restarting all 3.