我们正在为我们的项目使用Visual Studio 2015和.Net 4.5。 随着项目规模的扩大,我们希望建立一个构建环境,而不是在开发人员工作站上构建。
我们使用chocolaty来安装" microsoft-build-tools 15.0.26320.2"这是一个视觉工作室2017年建设环境。 chocolaty包需要.Net 4.6.2包。
我们所有的项目都参考了ToolsVersion 14.0和TargetFrameworkVersion v4.5。项目文件如下所示:
<Project ToolsVersion="14.0" ...>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
如果目标系统上安装了.Net 4.6.2,项目将编译并运行,没有任何问题。如果只安装.Net 4.5,我们在尝试启动程序时会出错。
导致此问题的代码行是
string.Format(new CustomFormatProvider(), "{0:fs}", value);
编译器引用了4.6中引入的静态方法String.Format(IFormatProvider,string,object)而不是String.Format(IFormatProvider,string,param object [])
有谁能告诉我,如何让MSBuild.exe只使用.Net 4.5中已有的方法?