5

ターゲットの 1 つで msbuild タグを使用して Visual Studio 2010 ソリューションをビルドする nant スクリプトがあります。

問題は、この時点で失敗することです。エラーは次のとおりです。

Solution file error MSB5014: File format version is not recognized.  MSBuild can only read solution files between versions 7.0 and 9.0, inclusive.

Failed to start MSBuild.

External Program Failed:  C:\Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe (return code was 1)

エラーは理にかなっています.MSBuildの.NET 2.0バージョンを呼び出している場合、VS2010ソリューションはコンパイルされません。ただし、正しいバージョンの MSBuild を呼び出す方法がわかりません。

「where MSBuild」を (ビルド スクリプトが失敗したのと同じ VS2010 コマンド プロンプトから) 実行すると、次のようになります。

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
 C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe

「msbuild /version」を実行すると (再び同じウィンドウ)、次のようになります。

 Microsoft (R) Build Engine version 4.0.30319.17929
 [Microsoft .NET Framework, version 4.0.30319.18034]
 Copyright (C) Microsoft Corporation. All rights reserved.

 4.0.30319.17929

したがって、すべてが 4.0 バージョンを使用する必要があるように見えますが、そうではありません。何が与えられますか?以前にこの問題に対処したことは知っていますが、何が私の命を救ったのか思い出せません。

4

4 に答える 4

4

私は答えに感謝し、skolima が機能することを知っています。解決策は、このタグを追加するのと同じくらい簡単になりました。

    <property name="nant.settings.currentframework" value="net-3.5"/> 

再度、感謝します。

于 2013-02-28T15:42:17.017 に答える
1

私が通常使用するのは、switch (または他のフレームワーク バージョン) を使用して実行することNAnt-t:net-4.0あり、スクリプトでは<exec program="${framework::get-tool-path('msbuild.exe')}" managed="strict" />実際に msbuild を呼び出す必要があります。はい、これは組み込みタスクを使用しませんが、<msbuild/>より回復力があります。

于 2013-02-27T23:17:30.330 に答える
1

NAnt/NAntContrib の古いバージョンのデフォルトは v2.0 です。

次のように聞こえます: .net 4.0 rc を使用した Nant msbuild タスク

于 2013-02-27T22:51:41.840 に答える
0

同様の質問に答えました: <msbuild> task or msbuild.exe with NAnt? しばらく前

基本的に、MSBuild 実行可能ファイルを指すプロパティを設定すると、NAnt がすぐにサポートするものよりも新しい .NET にアップグレードするときに (長期的な) 問題を回避できます。

于 2013-02-28T17:58:33.823 に答える