2009-08-05 238 views
1

我已經構建了一個控制檯應用程序,該應用程序引用了我們構建的另一個dll的版本4.3.2.1。控制檯應用程序引用的C#版本控制

它工作正常,並完成其工作。

然後建立dll的4.3.2.2版本,並且控制檯應用程序開始死亡,因爲它想要查看4.3.2.1。

有什麼辦法可以告訴控制檯應用程序使用4.3.2.1或更高版本嗎? 4.3.2.1中的方法也存在於4.3.2.2中,並且將包含在所有後續版本的dll中。

回答

4

使用的app.config的<assemblyBinding>元素:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Foo.dll" 
           publicKeyToken="1234567890abcdef" 
           culture="neutral" /> 
      <bindingRedirect oldVersion="4.3.2.1" 
          newVersion="4.3.2.2"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

又見"Redirecting Assembly Versions"以獲取更多信息。

這是假設你不想重新編譯應用程序,當然 - 如果你不介意重新編譯,那麼只需將「使用特定版本」設置爲false應該沒問題。

+0

謝謝,我會試試看。我寧願不必重新編譯實用程序,所以這種方法聽起來像是完美的。 – 2009-08-05 15:11:44

3

當您將引用選擇到另一個DLL時拉起屬性窗口。確保「特定版本」屬性設置爲false。

+0

沒關係,如果你可以重建應用程序,但是你也可以使用app.config。我相信「使用特定版本」只是修改編譯時引用的版本。 – 2009-08-05 14:20:17

0

如果dll名稱更改。例如。 foo-4.3.2.1.dll,foo-4.3.2.2.dll唯一的解決方法是在運行時加載程序集。

如果程序集名稱永遠不會更改,那麼可能爲您引用的程序集啓用了「特定版本」。禁用它應該可以解決問題。