几个.dll的GAC程序集重定向

时间:2013-09-05 14:16:09

标签: gac policy gacutil global-assembly-cache publisher-policy

我正在尝试重定向特定的.dll,我们称之为MyAssembly.dll。该程序集有两个版本:

MyAssembly.dll version 1.0.0.0

MyAssembly.dll version 1.1.0.0

我希望这两个程序集重定向到第三个版本:1.2.0.0。 为此,我编写了这个.config文件来构建要在GAC上应用的Publisher Policy

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
            <assemblyIdentity name="MyAssembly" publicKeyToken="myPublicKeyToken" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.2.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

有了这个,我创建了适当的.config文件来生成策略。但是当我想要创建Policy时,我的问题出现了。

在下一步之前注意:程序集版本控制的工作原理如下:

<major version>.<minor version>.<build number>.<revision>

我第一次想要创建一个策略,我意识到,如果我要重定向的程序集版本是:1.0.0.0我必须创建一个匹配如下的策略:

Policy.<majorversion>.<minorversion>.<AssemblyName>.dll

有了这个,我就可以将任何MyAssembly.dll从1.0。*重定向到更高版本,再到版本1.1。

但是,如果我想重定向多个程序集,我怎么能生成该策略,就像我上面解释的那样?我的政策应该如何?

如果我有两个组件:

1.0.0.0 - 1.1.0.0

如何构建PublisherPolicy

1 个答案:

答案 0 :(得分:1)

由于this文章,我必须为我的程序集的 MajorVersion.MinorVersion 的每个组合创建一个策略。所以我必须制定两个政策:

  • 可以从 1.0.0.0 重定向到 1.2.0.0
  • 另一个从 1.1.0.0 重定向到 1.2.0.0

此解决方案有效,但如果有人知道更有效的方法,我将非常感激。