2017-03-09 140 views
0
X <= nuget package A <= DLL version 1 
X <= nuget package B <= DLL version 2 

所以我的項目X引用了兩個第三方nuget軟件包A和B.這兩個軟件包引用相同的DLL但具有不同的版本。現在問題似乎是在構建時,DLLv1被binv文件夾中的DLLv2覆蓋。並且在運行時,A中的代碼抱怨DLLv1未找到。無法加載文件或程序集或其某個依賴項。系統找不到指定的文件

我已經在bin文件夾中添加了一個程序集綁定配置文件來綁定到DLLv2。但是這似乎沒有改變任何東西。

這是一個使用msbuild構建的CSharp項目。

問題:

  1. 是AssemblyBinding解決這個問題的正確工具嗎?
  2. 解決此問題的正確方法是什麼?
+0

簡單...不要這樣做。您應該讓解決方案中的所有項目都引用相同版本的軟件包。 –

+0

nuget包是第三方,我無法控制他們使用的DLL版本。 – Lee

+0

除非第三方庫已固定特定版本,否則應該可以在整個消費項目中管理和安裝共享依賴項。您的箱中只能有一個文件名實例。如果這不起作用,則需要將項目拆分爲多個入口點,每個入口點都具有特定版本的公共庫 –

回答

0

我找到了我的問題的根本原因。我的程序在PowerShell中運行,PowerShell不會加載我的應用程序的配置。我需要讓PowerShell的配置有我的綁定。

相關問題