2010-01-16 55 views
1

我在web.config中注意到了這一點:奇怪節在web.config中

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

究竟這是什麼道理?

感謝

回答

3

這是一個綁定重定向,距離.NET的平常引用的程序集綁定到它是建立對確切版本願望逃生艙口。通常,如果一個程序是針對特定DLL的版本X構建的,那麼即使新版本可用,.NET也會嘗試加載版本X.這是爲了避免由於更新版本中的行爲更改(包括錯誤修復!)而導致的意外。綁定重定向指定另一個策略,指出.NET應該加載在「newVersion」中指定的版本。

此特定重定向告訴程序:當程序集嘗試加載版本號在1.0.0.0和1.1.0.0之間的版本的System.Web.Extensions.dll時,請不要加載要求的版本:改爲加載版本3.5.0.0。

(在這種情況下,「計劃」 ==「網站」)

它通常用於強制程序來使用較新的DLL版本比它始建反對,而無需重新編譯它反對更新的版本。

1

我的理解是它告訴你的應用程序使用System.Web.Extensions 3.5版本,而不是1.0或1.1。換句話說,「需要1.0或1.1,用3.5代替」。

1

簡而言之,它指定如果應用程序依賴於System.Web.ExtensionsSystem.Web.Extensions.Design,版本1.0.0.0到1.1.0.0,則系統應加載並使用程序集的版本3.5.0.0。您可以在dependentAssemblybindingRedirect的文檔中閱讀這方面的內容。