在编译时为强名称程序集

时间:2016-08-25 12:47:46

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

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

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

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

是否可以进行此类重定向或是否有其他建议?

非常感谢提前 此致,迈克尔

1 个答案:

答案 0 :(得分:0)

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

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

强命名与非强命名不应成为这个因素。

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