VS 2013 and MSBuild

6
我最近升级到了Visual Studio 2013,这导致使用MSBuild(API或带有命令行参数的可执行文件)进行外部构建时出现了一系列问题。
问题#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
1个回答

6
所以,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 environment variables
编辑:使用MSBuild 12.0程序集“C:\Program Files (x86)\MSBuild\12.0\Bin\"修复了代码分析错误。

我没有找到这个目录%VS110COMNTOOLS%。另外,如果我正在使用C# MSBuild API,我看不到任何改变所调用的MSBuild可执行文件的方法。当我在VS 2013中构建(成功工作)时,我假设它正在调用MSBuild 12,除非工具版本覆盖它(设置为4.0)。 - Jack
Hamid,问题在于API目前是4.0版本并使用较旧的MSBuild可执行文件。我希望12.0版本的API会被发布,这样就可以运行正确的可执行文件了。 - Jack
1
我已经找到了12.0程序集,并且已经修复了代码分析错误“C:\Program Files (x86)\MSBuild\12.0\Bin\”。如果您将此信息添加到您的答案中,我会将其标记为已接受。感谢您的帮助。 - Jack
已编辑答案。谢谢 :) - Hamid Shahid
@HamidShahid,我将VS2010项目迁移到VS2013并尝试构建,但遇到了一些问题。C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(214,5): error MS175: 无法从程序集"C:\Program Files (x86)\MSBuild\12.0\bin\Mrosoft.Build.Tasks.v12.0.dll"中加载任务工厂"CodeTaskFactory"。用于启动进程的环境块长度不能超过65535个字节。您的环境块长度为67632个字节。请删除一些环境变量,然后重试。[X:\base\mti\dmm\winclnt\project\wirap\winwrap.vcxproj] - user2623906
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接