2012-10-29 47 views
1

您能告訴我這種情況的最佳方法嗎?我繼承了一個新項目,並沒有遇到過這種情況。.Net dll參考 - 部署到具有不同版本的第三方dll的PC上

我們在C#Windows窗體應用程序中引用了第三方生成文檔的工具。

在個人電腦上安裝的部署環境中有第三方工具的兩種不同版本 - v1.0和v2.0。

我只能建立我們的Windows窗體應用程序以使用第三方工具的v1.0或v2.0。爲此,我必須在構建之前在開發PC上安裝任一版本。這顯然是一個壞方法,因爲我必須每次卸載/重新安裝第三方工具。如果我有錯誤的版本建立在我的電腦上的用戶接收

Could not load file or assembly 'Interop.IManage, Version=1.0.0.0, Culture=neutral,  
PublicKeyToken=141424aa94e741g5' or one of its dependencies. The located assembly's 
manifest definition does not match the assembly reference. 

人們似乎只有一個參考的項目,該項目採用GAC引用的DLL。

C:\WINDOWS\assembly\GAC\Interop.iManage\1.0.0.0__141424aa94e741g\third.partyTool.dll 

從而改變這個我卸載V1.0和V2.0安裝

C:\WINDOWS\assembly\GAC\Interop.iManage\2.0.0.0__141424aa94e741g\third.partyTool.dll 

在我們的應用程序的部署方面,我們做的文件的簡單的XCOPY,沒有安裝程序, 。

有沒有一種方法可以在我們的應用程序中保存兩個引用,然後讓它在部署後使用正確的引用?或者是否有我可以用來解決這個問題的部署方法?

感謝

+0

完全不清楚爲什麼您必須卸載其中一個版本。 GAC的意義在於你不必這樣做。所以不要。請將引用程序集保存在獨立的文件夾中,絕對不要在項目中直接引用GAC。一個紅旗:這是真的* .NET 1.x程序集? –

回答

1

你總是可以建立針對1.0.0第三方組件,然後做一個綁定重定向(在你的應用程序配置),如果有使用2.0.0版本。

請參閱:http://msdn.microsoft.com/en-us/library/eftw1fys(v=vs.100).aspx瞭解更多詳情。

更多樣品在這裏:http://blogs.msdn.com/b/thottams/archive/2007/01/30/introduction-to-versioning-and-bindingredirect.aspx?Redirected=true

SO帖子還介紹了設置綁定重定向時的常見問題:Assembly binding redirect does not work