【问题标题】:Conditional Binding Redirect条件绑定重定向
【发布时间】:2017-07-31 21:13:10
【问题描述】:

我正在尝试实现(条件)绑定重定向。我希望绑定重定向以使用特定版本的程序集,具体取决于是否已经存在另一个更新版本。

为清楚起见,该项目当前引用版本 1.1.0.0,但如果不存在,我希望它引用版本 1.0.0.0。

此重定向当前已成功重定向到 1.0.0.0,但只有 1.1.0.0 的环境无法正常运行(此帖子的程序集名称和 publicKeyToken 已更改)。

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="MyAssembly" culture="neutral" publicKeyToken="blahblahblah"/>
            <bindingRedirect oldVersion="1.1.0.0" newVersion="1.0.0.0"/>
            <codeBase version="1.0.0.0" href="file://C:\Windows\assembly\GAC_MSIL\MyAssembly"/>
    </dependentAssembly>
</assemblyBinding>

如果不需要此重定向,如何取消/忽略它?

【问题讨论】:

  • @vcsjones 你介意澄清一下吗?也许我误解了绑定重定向的意义。
  • 假设我有一个第 3 方程序集 Y,它依赖于另一个第 3 方程序集 X 的 1.0 版;并且两者都被强烈命名。现在我想使用 X 的 1.1 版本。如果我升级 X,我会破坏 Y,因为它需要 1.0。通过绑定重定向,我可以告诉它使用 1.1,即使它是针对 1.0 编译的。
  • @vcsjones 好的,这更有意义。谢谢你的简单解释。有没有办法可以在运行时动态更改项目引用?
  • 据我所知(有可能,但如果有,我不知道)
  • @vcsjones 我拉起this post。我会试试看效果如何。

标签: c#


【解决方案1】:

恐怕它不能在运行时完成,但如果它是特定于环境的,你可以在构建时完成。在构建管道上,您可以检查版本 1.1 的程序集 x 是否存在,如果存在,请更新配置文件以使用该版本。

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多