MSBuild与Visual Studio - 编译的差异?

时间:2017-03-14 13:54:29

标签: .net vb.net visual-studio tfs msbuild

我正在尝试使用Visual Studio 2015和内部部署TFS 2013服务器为传统的VB.Net ASP.Net Forms应用程序设置持续集成过程。但是,我没有获得构建定义来成功构建我的应用程序。

这是一个XAML构建定义,它可以在每次TFS签入时愉快地触发,但由于错误编译了与'Extended Properties cannot be initialized'等属性相关的错误的组件项目,因此到目前为止无法构建应用程序。

所有项目都在Visual Studio中愉快地编译,所以我猜这些错误实际上是由于vbc.exe编译器的版本,或MSBuild使用的编译器选项?

我试图将项目中使用的相同编译器设置传递给MSBuild参数(见下文),但没有成功。

/p:OptionStrict=false /p:OptionInfer=false /p:OptionExplicit=true /p:OptionCompare=binary

主应用程序项目具有以下ToolsVersion,在项目文件中指定,但Visual Studio实际上可能使用更高版本(14或15?)而MSBuild不是?

<Project DefaultTargets="Build" ToolsVersion="12.0"

为什么这个项目在Visual Studio中完美构建,而不是在构建定义中的任何建议都将非常受欢迎。

1 个答案:

答案 0 :(得分:3)

就像我评论的那样,这里棘手的部分是确定正确的MSBuild工具版本,然后以正确的方式使用它。

首先,很难记住Visual Studio版本的MSBuild版本号。您可以使用谷歌,以下只是一些供参考,

  • Visual Studio 2015 - MSBuild 14
  • Visual Studio 2017 - MSBuild 15

确保它们存在于执行构建的计算机上。

其次,您可能需要覆盖工具版本(per this article)。