我已經構建了一個控制檯應用程序,該應用程序引用了我們構建的另一個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中。
我已經構建了一個控制檯應用程序,該應用程序引用了我們構建的另一個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中。
使用的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應該沒問題。
當您將引用選擇到另一個DLL時拉起屬性窗口。確保「特定版本」屬性設置爲false。
沒關係,如果你可以重建應用程序,但是你也可以使用app.config。我相信「使用特定版本」只是修改編譯時引用的版本。 – 2009-08-05 14:20:17
如果dll名稱更改。例如。 foo-4.3.2.1.dll,foo-4.3.2.2.dll唯一的解決方法是在運行時加載程序集。
如果程序集名稱永遠不會更改,那麼可能爲您引用的程序集啓用了「特定版本」。禁用它應該可以解決問題。
謝謝,我會試試看。我寧願不必重新編譯實用程序,所以這種方法聽起來像是完美的。 – 2009-08-05 15:11:44