背景 我的公司发布了一个基于C#.NET的大型产品,该产品是使用VS2010和TFS2010开发和构建的。我们运送给客户的组件使用以下方式编译:
我们现在正在将我们的开发基础设施升级到VS2013和TFS2013。这将在我们的构建环境中将MSBuild Toolset(ToolsVersion)从4.0更新为12.
对于未来的构建,我们打算使用升级的工具版本,但不会更改目标框架,因此我们发送给客户的程序集将使用以下方式编译:
问题: 我们经常修补现有的客户安装。所有这些安装都是使用Tools Version 4.0编译的。升级后,我们的修补程序集将使用工具版本12进行编译。
我无法理解这会导致任何兼容性问题。但是,我的经理称自己为“旧学校”,并认为您不应该更改现有安装(甚至是.NET应用程序)的编译器。他主张我们不升级用于编译现有客户安装补丁的构建基础架构。我们正面临着令他难以置信的挑战。
我们知道您可以在.csproj文件中指定工具版本。对我而言 - 解决方案中的每个项目都可以指定不同的工具版本,这意味着程序集必须兼容。
问题: 如果.NET程序集是使用不同的工具版本构建的,那么是否存在任何已知的.NET程序集彼此不兼容的问题?