0

私のプロジェクトにはすべて 3 つの<PropertyGroup>項目があるようです。

1:

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

2: <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
3: <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

FinalBuilder が失敗しています。プロジェクト ファイルに移動し<OutputPath>bin\Debug\</OutputPath>、.csproj ファイル (私が理解している MSBuild ファイル) の最初の要素に追加すると、ビルドは成功します。

残りの 2 つの要素は既に<OutputPath>定義されています。

これは 3 つの要素すべての必須フィールドですか? プロジェクト ファイルの最初の要素から欠落しているのはなぜですか?

4

1 に答える 1

1

MSBuild は、プロジェクトをコンパイルするときに、ビルド出力を配置する場所への OutputPath を引数として受け取ります。

.csproj ファイルには、いくつかの既定の設定があります。最初の <PropertyGroup> にあります。

条件付きPropertyGroupには、さまざまな構成とプラットフォームに対する特定のプロパティがあります。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">

このノード内のプロパティはデフォルトのものを上書きするため、ビルドを特殊化できます。

異なるPropertyGroups をヒットするために、MSBuild はいくつかの引数を取ります。たとえば、"Release|x86" をヒットすると、コマンドは次のようになります。

msbuild /p:Configuration="Release" /p:Platform="x86" 

MSBuild は default のプロパティを使用し、条件を満たす s のPropertyGroupプロパティを上書き/使用します。この例では "Release|x86" でコードをコンパイルします。PropertyGroup

PropertyGroupあなたの問題は、MSBuild が正しいsを評価するための正しい引数を持っていないように聞こえます。

于 2012-04-25T20:21:05.813 に答える