我们有一个关于编译时程序集绑定重定向的问题:
- Team V (the Veterans)正在开发产品P1
- P1由Team V在两个分支(分支1.6)持续开发。x和1.7.x),因此产品P1的版本在两个分支 中随着时间的推移而增加。
- Team NG (New Generation)基于产品P1构建了产品P2(使用了来自P1分支1.7的某些组件)
- 产品P2包含一个Assembly A2(强命名),帮助实现基于P1的任何产品(P2, P3…)
- Team NG为Assembly A2创建了一个Nuget Package(它引用了来自P1分支1.7的某些程序集)
- 现在,NG团队已经启动了产品P3,并且必须使用P2的装配A2和P1的装配A1
- 来自P1的Assembly A1也可以作为Nuget Package提供,但在1.6版本中(因为1.7版本尚未批准用于P3产品)
- 所以NG团队现在有两个参考的产品P3: A2和A1
- 现在的问题是,A2指的是A1在1.7版本,但我们只有A1在1.6版本
- Team NG在1.7版本中不允许使用A1
这就是为什么我们在编译时为强命名程序集寻找绑定重定向。据我所知(通过调查),在为强命名程序集设置此属性时,"特定版本"属性不起作用。
这样的重定向是可能的还是有其他的建议?
提前感谢认为,迈克尔
app.config/web的bindingRedirect元素。配置文件只适用于运行时(不适用于编译时)。
在编译时,编译器不坚持引用具有相同的版本号,除非在项目文件中引用的SpecificVersion元素设置为True。
强命名与非强命名不应该是一个因素。
另请参阅"特定版本"如何准确地属性的汇编参考工作在Visual Studio?