我有兩個項目的解決方案:Proj1和Proj2,其中Proj1是啓動項目。需要一種方法來引用同一第三方DLL的2個不同版本
Proj1引用Proj2(爲了調用Proj2的類),它有現有的代碼也引用了一個名爲A的第三方DLL,版本爲1.0.0.0。
Proj2引用了相同的第三方DLL A,但它在2.0.0.0版中引用它,因爲此項目中的類需要1.0.0.0中不提供的較新實現。
到目前爲止,我已經試過如下:1。 引用 2.增加了一個名爲「v2Folder」在Proj2文件夾時,切換到「特定版本」爲真,並添加了V2.0.0.0它,設置其「複製到輸出目錄」以便始終複製 3.向app.config添加「探測路徑」以指向使用v2.0.0.0 DLL的子文件夾
我想要的是查看A v1。在正常的\ bin \文件夾中有0.0.0,在\ bin \ v2Folder中有一個2.0.0.0版本,我期望當我運行我的Proj1.exe時,Proj1的舊代碼仍然會調用一個v1.0.0.0的方法,只有在調用Proj2實現時才調用A v2.0.0.0的方法。
問題是,當我構建我的解決方案時,v1.0.0.0被替換爲v2.0.0.0,構建日誌有類似於「無法解決」A,Version = 2.0.0.0,文化=中立,PublicKeyToken = blah「和」A,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = blah「,任意選擇」A,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = blah「。
有人可以幫忙嗎?
謝謝你的建議Adriano。我的問題是我希望我的應用程序在代碼的不同部分使用這兩個版本,即我想保留版本1和2. – codetc 2012-07-18 22:06:14
爲什麼不升級Proj1以使用較新版本的DLL「A」?不建議使用不同版本的相同DLL,並且在沒有使用AssemblyResolver進行黑客入侵的情況下實際上不可能。這裏是描述如何NuGet可以幫助你在這種情況下的鏈接:http://blog.davidebbo.com/2011/01/nuget-versioning-part-1-taking-on-dll。html – 2012-07-18 22:07:37