【问题标题】:Binding redirect at compile time for strong named assembly在编译时为强命名程序集绑定重定向
【发布时间】:2016-08-25 12:47:45
【问题描述】:

我们有一个关于编译时程序集绑定重定向的问题:

  • V 组(退伍军人)正在开发产品 P1
  • P1 由 Team V 在两个分支(分支 1.6.x 和 1.7.x)中不断开发,因此产品 P1 的版本在两个分支中随着时间的推移而递增
  • NG 团队(新一代)基于产品 P1 构建了产品 P2(使用 P1 分支 1.7 中的某些组件)
  • 产品 P2 包含一个程序集 A2(强命名),可帮助实现任何基于 P1 的产品(P2、P3...)
  • NG 团队为程序集 A2 创建了一个 Nuget 包(它引用了 P1 分支 1.7 中的某些程序集)
  • 现在,NG 团队已启动产品 P3,必须使用 P2 中的程序集 A2 和 P1 中的程序集 A1
  • P1 中的 Assembly A1 也可用作 Nuget 包,但在 1.6 版中(因为 1.7 尚未批准用于产品 P3)
  • 因此,NG 团队现在拥有带有两个参考的产品 P3:A2 和 A1
  • 现在的问题是,A2 在 1.7 版中引用了 A1,但在 1.6 版中我们只有 A1
  • 1.7 版中不允许 Team NG 使用 A1

这就是我们在编译时为强命名程序集寻找绑定重定向的原因。据我所知(通过调查),在为强命名程序集设置此属性时,“特定版本”属性无效。

这样的重定向是可能的还是有其他建议?

非常感谢提前 问候,迈克尔

【问题讨论】:

    标签: compile-time strongname assembly-references assembly-binding-redirect


    【解决方案1】:

    app.config/web.config 文件的 bindingRedirect 元素仅适用于运行时(不适用于编译时)。

    在编译时,编译器不会坚持引用具有相同版本号,除非引用在项目文件中将 SpecificVersion 元素设置为 True。

    强命名与非强命名不应成为影响因素。

    另见How exactly does the "Specific Version" property of an assembly reference work in Visual Studio?

    【讨论】:

    • 第一个说法不正确。这是一个提到编译时间也受到影响的资源:@​​987654322@。在我的公司,我们还创建了一个证明这一点的 PoC。不同的绑定重定向最终会在 bin 文件夹中使用不同的库版本。我对第二个陈述一无所知。第三个语句也不正确,只有强名称程序集似乎受到绑定重定向的影响,至少在编译时是这样。编译器似乎忽略了非强命名程序集绑定重定向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2012-04-27
    • 2017-02-16
    • 2014-03-20
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多