2

私はチーム シティを使用して nant スクリプトを呼び出しています。現在、この nant スクリプトは非常に単純化されており、ソリューション内の 1 つのプロジェクトで msbuild タスクを呼び出すだけです。

ビルドが失敗しています。msbuild 3.5 が呼び出されているように見えますが、.net 2.0 フォルダーから誤って csc.exe を呼び出しています。.net 3.5 言語機能を使用しているため、コンパイルは失敗します。

csproj ファイルを見ると、ToolsVersion と TargetFrameworkVersion の両方が 3.5 を使用するように設定されています。msbuild が間違ったバージョンの csc.exe を選択する原因は何ですか?

4

3 に答える 3

6

MSBuild は、タスク、ターゲット、およびツールのツールセットを使用してアプリケーションをビルドします。通常、MSBuild ツールセットには、microsoft.common.tasks ファイル、microsoft.common.targets ファイル、および csc.exe や vbc.exe などのコンパイラが含まれています。MSBuild が正しい C# コンパイラ (csc.exe) を呼び出すようにするには、プロジェクト ファイルの Project 要素の ToolsVersion 属性でツールセットを指定します。次の例では、MSBuild 4.0 ツールセットを使用してプロジェクトをビルドする必要があることを指定します。

<Project ToolsVersion="4.0" ... </Project>

ToolsVersion 属性に関する詳細については、http://msdn.microsoft.com/en-us/library/78f4aasd.aspx を 参照してください。

于 2012-09-20T18:51:52.560 に答える
0

おそらく、パスに直接 2.0 バージョンの csc がありますか?

msbuildVisual Studio 2008 コマンド プロンプトから実行するとどうなりますか?

于 2010-08-18T09:11:11.047 に答える
0

次のように宣言することで、nant スクリプトで使用する msbuild を直接指定できます。

<!-- Initial path to use MSBuild from .NET Framework 3.5 -->
<property name="MSBuildApp" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" />

次に、msbuild を介してビルドを実行します。

<exec failonerror="true" program="${MSBuildApp}" verbose="true">
        <arg value="${SlnDir}\${SlnFile}" />
        <arg value="/t:Rebuild" />
        <arg value="/p:Configuration=${SlnConfig}" />
    </exec>

または、NANT スクリプトを実行するときに、適切な .NET Framework バージョンを指定できます。

nant CreateYouProjectTask -t:net-3.5 -buildfile:BuildYourProject.build

于 2010-08-20T11:31:35.153 に答える