web-dev-qa-db-ja.com

web.config> configuration> runtime> assemblyBindingで生成されたエントリの意味/理由は何ですか?

私はしばらくの間、web.configファイルのこのセクションに気づきましたが、今では正確に目的が何かを推測しようとしています。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

だから、最初のエントリは言っているようです:

System.Web.Helpersは、31bf3856ad364e35の公開キートークンを持つ依存アセンブリの名前です。バージョン1.0.0.0から2.0.0.0をバージョン2.0.0.0にリダイレクトします。

私の最善の推測は、指定された範囲のバージョンを持つ指定された名前のアセンブリに依存するASP.NETランタイムのコンテキストで実行されるコードは、指定されたバージョンでコンパイルされたかのように実行されることを意味します指定された公開鍵。

これは、クラスライブラリに依存するWebプロジェクトがあり、そのクラスライブラリがbindingRedirectを持つアセンブリの古いバージョンへの参照を持っている場合、コードが新しいバージョンに対してコンパイルされたかのように実行されることを意味しますか?

48
Aaron Anodide

これは、クラスライブラリに依存するWebプロジェクトがあり、そのクラスライブラリがbindingRedirectを持つアセンブリの古いバージョンへの参照を持っている場合、コードが新しいバージョンに対してコンパイルされたかのように実行されることを意味しますか?

あなたはそれを正しく持っています(私は「...コードは新しいバージョンを参照しているかのように実行されます」と言います)、 http://msdn.Microsoft.com/en-us/library/7wd6ex19を参照してください%28v = vs.110%29.aspx

「厳密な名前のアセンブリの特定のバージョンに対して.NET Frameworkアプリケーションをビルドすると、アプリケーションは実行時にそのバージョンのアセンブリを使用します。ただし、アプリケーションを新しいバージョンのアセンブリに対して実行したい場合があります。 」

33
jbl