58

公開キー トークンが古いバージョンでは null で、新しいバージョンでは設定されている場合、参照されているアセンブリの異なるバージョン間でアセンブリ バインド リダイレクトを実行することは可能ですか?

たとえば、2 つのアセンブリがあります...

System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

次のアセンブリ バインディング リダイレクトは、Asp.Net の web.config で機能する必要があります...

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

3 に答える 3

45

いいえ、できません。アセンブリには、同じ publicKeyToken が必要です。

bindingRedirect タグには oldVersion 属性と newVersion 属性しかないため、とにかく「null」バージョンについて伝える方法はありません。

しかし、背後にある本当の理由は、厳密な名前のメカニズムにより説明されています

于 2010-02-03T12:16:18.073 に答える
6

AppDomain.AssemblyResolveイベントを使用してそれを行うことができる場合があります。この回答にいくつかのサンプル コードを含めました。

于 2010-02-26T20:48:00.237 に答える