我最近升级到了Visual Studio 2013,这导致使用MSBuild(API或带有命令行参数的可执行文件)进行外部构建时出现了一系列问题。
问题#1:使用MSBuild进行构建时,它不会生成我们单元测试所需的Fake程序集,这会导致构建失败。在Visual Studio中进行简单的构建可以暂时解决此问题,直到需要生成新的Fake程序集。
问题#2:运行代码分析时,会出现以下错误提示:
问题#1:使用MSBuild进行构建时,它不会生成我们单元测试所需的Fake程序集,这会导致构建失败。在Visual Studio中进行简单的构建可以暂时解决此问题,直到需要生成新的Fake程序集。
问题#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,位于与先前版本不同的目录中)。
我不确定为什么Visual Studio的行为与MSBuild不同,我只是像这样指向解决方案文件...
msbuild.exe "path\solution.sln" /property:Configuration=Debug