2011-09-15 39 views
5

假設我有一個使用第三方.net程序集B.dll和第三方.net程序集C.dll的.net程序集A.dll。如何使用2個第三方.net庫時,其非託管依賴衝突?

事實證明,內部B.dll使用非託管程序集D.dll(版本1) 和C.dll使用非託管程序集D.dll(版本2)。

B和C來自不同的供應商,並且只使用其正確版本的D.dll進行測試。

我該如何部署A,B和C才能正常工作?

編輯:

我認爲有三個不同的問題:

1)如何從外部控制的路徑B和C使用用於尋找d。

2)如何從外部控制路徑D用於自己的依賴關係。

3)如何確保進程正確指示函數調用。

我的研究表明,如果沒有所有模塊的編譯時間控制,這可能是不可能的...

回答

1

我會嘗試通過「探測」配置部分的手段來配置多個bin文件夾中。

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin;bin\B;bin\C"/> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

然後我會把B.DLL和非託管的依賴成BIN \乙文件夾,C.dll及其非託管依賴於斌\ C文件夾中。

+0

從我的理解,這將重定向發現B和C但是這不會自動鏈爲非託管搜索D. – morechilli

+0

@morechilli:據我瞭解,B和C應該尋找它旁邊的依賴關係,所以每個(B和C)應該找到相應版本的D – ivan

+0

感謝您的幫助 - 您是否有任何描述此行爲的鏈接 - 我還沒有發現任何暗示這種情況的建議。 – morechilli