1

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

  • Team 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 中的程序集 A1 也可作为 Nuget 包提供,但在 1.6 版中(因为 1.7 尚未批准用于产品 P3)
  • 因此,NG 团队现在拥有带有两个参考的产品 P3:A2 和 A1
  • 现在的问题是,A2 在 1.7 版中引用了 A1,但我们在 1.6 版中只有 A1
  • Team NG 在 1.7 版本中不允许使用 A1

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

是否可以进行这样的重定向,或者还有其他建议吗?

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

4

1 回答 1

1

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

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

强命名与非强命名不应该是一个因素。

另请参阅程序集引用的“特定版本”属性在 Visual Studio 中究竟是如何工作的?

于 2017-02-22T15:43:15.117 回答