BindingRedirect奇怪的行为

时间:2016-01-13 15:39:51

标签: c# .net version .net-assembly assembly-resolution

我试图找出版本重定向的问题已经过了几天,但我很难失败。情况如下:

  • 有一个名为app.exe的
  • 此应用程序依赖于assembly_1.dll,
  • assembly_1.dll依赖于assembly_2.dll和assembly_3.dll。

如果所有内容都是使用相同版本构建的 - 假设版本为2.0.0.0 - 毫不奇怪:一切正常,app.exe可以启动。

现在我更改了assembly_1.dll的版本,现在版本为1.0.0.0。如果没有重定向,则无法启动app.exe,因为找不到assembly_1.dll版本2.0.0.0。所以我添加了app.config.exe:

<?xml version="1.0"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="assembly_1"
                          publicKeyToken="1234123412341234" />
        <bindingRedirect oldVersion="0.0.0.0-99.99.99.99" newVersion="2.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

令人惊讶的是app.exe仍然无法启动,即使现在应该将assembly_1的版本视为2.0.0.0。

当重定向assembly_2时,app.exe可以启动时突然发生了意外(assembly_3的重定向似乎没用了?!)。

有人可以指出这种行为涉及的过程吗?是否有某种自动绑定?

此致 戴维

0 个答案:

没有答案