入力すると...
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のコピーをどのように見つけますか。また、最新バージョンが使用されるようにこのバージョンを変更するにはどうすればよいですか?
PATH環境のどこかにある必要があります。 「where msbuild」を使用して、msbuildのロード元を判別します。
Visual Studioコマンドプロンプト(2010)ショートカットを使用して、VS 2010およびMSBuild 4.0のパスおよびその他の環境変数を初期化します。
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
環境変数 を変更します。
MSBuildpath変数を検索/設定してC:\Windows\Microsoft.NET\Framework\v4.0.30319
明らかに、上記のパスはインストール場所に依存しますが、正確でない場合は近くなります。
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など)を追加したりできます。