当我输入...
Msbuild<Enter>
...在命令提示符下,我得到......
Microsoft (R) Build Engine Version 2.0.50727.4927
[Microsoft .NET Framework, Version 2.0.50727.4927]
Copyright (C) Microsoft Corporation 2005. All rights reserved.
除非我针对Visual Studio 2010 .sln
文件运行此错误消息,否则这一切都非常好,但错误消息表明:
MyProject.sln(2): Solution file error MSB5014: File format version is not recognized. MSBuild can only read solution files between versions 7.0 and 9.0, inclusive.
0 Warning(s)
1 Error(s)
看起来正在调用的MSBuild版本无法理解我的解决方案文件。
我想我会查看我的路径,看看MSBuild从哪里被接收。但是,我的路径似乎没有指向要找到MSBuild的位置。
命令行如何查找正在使用的MSBuild副本?如何更改此版本以便使用最新版本?
答案 0 :(得分:37)
我发现此问题是因为我的PATH
变量未包含对MSBuild.exe
的引用。如果其他人遇到此问题,我的解决方案是从命令提示符中明确注册Visual Studio工具的环境变量:
"%VS100COMNTOOLS%"\\vsvars32.bat // VS2010 environment variables
"%VS110COMNTOOLS%"\\vsvars32.bat // VS2012 environment variables
"%VS120COMNTOOLS%"\\vsvars32.bat // VS2013 environment variables
MSBuild.exe
现已在PATH
where msbuild
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe
答案 1 :(得分:24)
它必须位于PATH环境中的某个位置。使用'where msbuild'来确定从哪里加载msbuild。
使用Visual Studio命令提示符(2010)快捷方式初始化VS 2010和MSBuild 4.0的路径和其他环境变量。
答案 2 :(得分:2)
查找/设置您的MSBuild 路径变量为C:\Windows\Microsoft.NET\Framework\v4.0.30319
很明显,上述路径将取决于您的安装位置,但如果不准确,它将会关闭。
答案 3 :(得分:1)
为了构建C#6项目,这对我来说是一个批处理文件
if exist "%ProgramFiles(x86)%\MSBuild\14.0\bin" set MSBUILDLOCATION=%ProgramFiles(x86)%\MSBuild\14.0\bin
if exist "%ProgramFiles%\MSBuild\14.0\bin" set MSBUILDLOCATION=%ProgramFiles%\MSBuild\14.0\bin
"%MSBUILDLOCATION%\msbuild.exe" "path\to\my\project.csproj"
如果您想支持一系列版本,可以轻松更改版本号(14.0)或添加更多版本号的行(例如12.0和4.0)。