公钥令牌为null时,程序集绑定会被忽略吗?

22

我在我的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>

Fusion日志告诉我,它没有在bin2中寻找我的程序集。

LOG: 初始 PrivatePath = NULL (并且它从未在bin/Debug/bin2/Foo中搜索)

这是否与没有publicKeyToken有关?

1个回答

23

是的,对于没有强名称(公钥标记)的程序集,CLR会忽略这些程序集的版本号。

请参见此MSDN页面以获取更多信息。


4
页面上的具体说明为:“您无法重定向未命名的程序集版本。对于未命名的程序集,公共语言运行时会忽略其版本。” - JJS
2
@JJS:对于.NET 4.5,该注释不存在。不过,目前尚不清楚行为是否已更改。 - Torben Koch Pløen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接