是否为PublicKeyToken = null忽略了程序集绑定?

JJS*_*JJS 18 .net c#

我有以下内容app.config.

<configuration>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <probing privatePath="bin2" />
    <dependentAssembly>
      <assemblyIdentity name="Foo" culture="neutral" publicKeyToken="null">
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.4497.27619" />
      </assemblyIdentity>
    </dependentAssembly>
  </assemblyBinding>
  ...
<configuration>
Run Code Online (Sandbox Code Playgroud)

Fusion记录告诉我它没有寻找bin2我的组装.

日志:初始PrivatePath = NULL(它从不搜索bin/Debug/bin2/Foo)

这是一个没有问题publicKeyToken吗?

Ric*_*lly 17

是的,对于非强名称的程序集(具有publicKeyToken),它们会被忽略,因为CLR会忽略这些程序集的版本号.

有关更多信息,请参阅此MSDN页面.

  • 页面上的特定说明说:"您无法重定向非强名称的程序集的版本.公共语言运行库会忽略不具有强名称的程序集的版本." (3认同)
  • @JJS:对于.NET 4.5,该注释不存在.但是,目前尚不清楚这种行为是否已经改变. (2认同)