59

しばらくの間、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 を持つ古いバージョンのアセンブリへの参照がある場合、新しいバージョンに対してコンパイルされたかのようにコードが実行されるということですか?

4

1 に答える 1

39

Does this mean if I have a web project that depends on a class library and that class library has a reference to an older version of the assembly which has a a bindingRedirect, that the code will execute as if it were compiled against the newer version?

You have it right (I would just say "...the code will execute as if it were referencing the newer version"), see http://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx

"When you build a .NET Framework application against a specific version of a strong-named assembly, the application uses that version of the assembly at run time. However, sometimes you might want the application to run against a newer version of an assembly."

于 2013-02-24T21:13:56.253 に答える