2011-04-01 127 views
8

我正在從一個項目引用其他產品的dll。該產品每年都有一個版本,並且每個版本都會更改程序集版本,儘管方法保持不變。 當我嘗試運行2009年的項目時,我運行2010版項目,它會引發錯誤,因爲它依賴於不同的版本。有沒有解決的辦法?如何讓C#項目忽略程序集的版本號?

回答

8

嘗試選擇引用,並在屬性窗口中將特定版本設置爲false。

+1

顯然這隻影響編譯時的程序集引用。 – 2012-03-07 01:36:47

7

如果你換你的裝配的版本後,指的是在問題運行沒有執行重建程序引用您的新建裝配的,你需要使用一個<bindingRedirect>指令程序的App的.config(或Web.config文件,如果你在談論一個網站。)

bindingRedirect用於指示.NET框架,它是確定使用組件的版本,其他不是一個應用原本是反對的。默認情況下,CLR希望看到應用程序在構建期間引用的DLL的版本相同,如果不是,則會引發異常。

1

它可以裝配不同的.NET版本的app.config地圖,你把應用程序的根文件夾

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Waters.ACQUITY.Remote" 
          publicKeyToken="6c13fd0b3604de03" 
          culture="neutral" /> 
     <bindingRedirect oldVersion="1.40.0.0" 
         newVersion="1.60.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

這是裝配時已參考答案已到另一個specifc裏面引用庫版本。

它發生在編譯時「特定版本」設置爲true。爲了避免這個問題,它應該是錯誤的。 enter image description here

相關問題