VS 2013和MSBuild

时间:2014-05-06 14:17:39

标签: visual-studio msbuild visual-studio-2013

我最近升级到Visual Studio 2013,这在使用MSBuild(使用命令行参数的API或可执行文件)进行外部构建时导致了背靠背问题

问题#1 使用MSBuild构建时,它不会生成单元测试所需的伪组件,这会导致构建失败。 Visual Studio中的简单构建会暂时修复此问题,直到需要生成新的假装配。

问题#2 运行代码分析时,会抱怨以下内容:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(284,5): 
error MSB4127: The "CodeAnalysis" task could not be instantiated from the assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\.\FxCopTask.dll". 

Please verify the task assembly has been built using the same version of the Microsoft.Build.Framework assembly as the one installed on your computer and that your host application is not missing a binding redirect for Microsoft.Build.Framework. Unable to cast object of type 'Microsoft.Build.Tasks.CodeAnalysis' to type 'Microsoft.Build.Framework.ITask'.

我的机器上只安装了Visual Studio 2013,显然安装旧版本可以解决问题,但这不是我能做的事情。 (VS 2013发布了自己的MSBuild 12.0,它位于与以前的MSBuild不同的目录中。)

我不确定为什么Visual Studio的行为与MSBuild有任何不同,我只是简单地指向解决方案文件...

msbuild.exe "path\solution.sln" /property:Configuration=Debug

1 个答案:

答案 0 :(得分:5)

因此,Visual Studio 2013附带了新版本的MSBuild,即MSBuild 12.0。安装后,它会更改路径,以便默认使用新版本。

看起来您的解决方案使用visual studio 2012进行编译,您可以指定msbuild.exe的完整路径,例如

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild“path \ solution.sln”/ property:Configuration = Debug

或在执行msbuild

之前运行以下命令设置visual studio 2012环境变量

“%VS110COMNTOOLS%”\ vsvars32.bat // VS2012环境变量

编辑:使用MSbuild 12.0程序集“C:\ Program Files(x86)\ MSBuild \ 12.0 \ Bin \”解决了代码分析错误的问题。