2012-12-05 57 views
2

我試圖實現(條件)綁定重定向。我想要綁定重定向來使用一個特定版本的程序集,這取決於另一個更新的版本是否已經存在。有條件綁定重定向

爲了清楚起見,該項目目前引用版本1.1.0.0,但如果不存在,我希望它引用版本1.0.0.0。

此重定向當前成功重定向到1.0.0.0,但僅具有1.1.0.0的環境無法正常工作(此文章的程序集名稱和publicKeyToken已更改)。

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="MyAssembly" culture="neutral" publicKeyToken="blahblahblah"/> 
      <bindingRedirect oldVersion="1.1.0.0" newVersion="1.0.0.0"/> 
      <codeBase version="1.0.0.0" href="file://C:\Windows\assembly\GAC_MSIL\MyAssembly"/> 
    </dependentAssembly> 
</assemblyBinding> 

我怎樣才能取消/忽略此重定向的情況下是沒有必要呢?

+0

這是無法完成的。 – vcsjones

+0

@vcsjones你介意澄清一下嗎?也許我誤解了綁定重定向的重點。 – tnw

+1

假設我有第三方程序集Y,它取決於另一個第三方程序集X的版本1.0;並且都被強烈地命名。現在我想使用X的1.1版。如果我升級X,我會打破Y因爲它預計1.0。使用綁定重定向,我可以告訴它使用1.1,即使它是針對1.0編譯的。 – vcsjones

回答

0

恐怕它不能在運行時完成,但如果它是特定於環境的,則可以在構建時完成。在構建管道上,可以檢查是否存在版本爲1.1的程序集x,如果存在,請更新配置文件以使用該版本。