我有以下部署結構:如何強制我的可執行文件從不同的路徑加載程序集?
deployment/
Service1.dll
Service2.dll
Service3.dll
Common.dll
Host.exe
在啓動過程中,3倍服務的DLL被複制到一個臨時位置,我用Assembly.LoadFrom
明確載入他們的方式。我的代碼查找deployment
中的更改,並且因爲這些程序集已加載到它們自己的AppDomain中,所以我可以將它們關閉,複製新版本並再次啓動它們。這很好。
我遇到的問題是,所有這些服務都依賴於Common.dll
(主要可執行文件而不是)。在啓動過程中,這個常見的dll是也被複製到臨時位置,但主機正在解析deployment
中的一個,而不是在我的臨時位置。
我試過使用AppDomainSetup.PrivateBinPath
並將其指向我的臨時位置,但它仍然解析爲部署文件夾中的一個。
有沒有一些方法,我可以強制CLR在我的臨時文件夾中查找第一試圖解決它在部署文件夾(如果有其他依賴,但在此之前沒有,我需要的「影子」,因爲它人)。
編輯:爲了澄清,如果common.dll
被修改,所有服務首先卸載釋放複製,然後重新啓動所有3
可以嘗試使用裝配解決事件: [解析程序集引用從另一個文件夾(HTTP:// stackoverflow.com/questions/5260404/resolve-assembly-references-from-another-folder?rq=1) – mungflesh
@mungflesh,我的印象是,如果事件無法找到組件,就會引發事件......並且我的情況,它可以 - 只是不是我想要的:) –