4

私の質問を明確に述べるまで読んでください。msbuild スクリプトから可変数の入力パラメーターを受け入れるカスタム msbuild タスクを実装しようとしています。通関タスクの入力パラメータの配列を認識しています

public ITaskItem[] ArrayofItems { get; set; }

これらは、propertygroup/itemgroup のいずれかを使用して次のように宣言できます。

<PropertyGroup>
<Item1>1</Item>
<Item2>2</Item>
<Item3>3</Item>
<Item4>4</Item>
<Item5>5</Item></PropertyGroup>

 <ItemGroup>
<File Include="1"></File>
<File Include="2"></File>
<File Include="3"></File>
<File Include="4"></File>
<File Include="5"></File>  </ItemGroup>

次に、VS 2010 コマンド ラインから、次のようにプロパティを設定/オーバーライドできます。

msbuild somefile.csproj /t:MyTarget /p:Item1=Name1;Item2=Name2...など

私の質問は次のとおりです:-プロパティグループ/アイテムグループを使用して、msbuildコマンドラインから「n」個の変数パラメーターを渡すことができるように、ビルドファイルでプロパティグループ/アイテムグループの変数を宣言することは可能ですか?

msbuild somefile.csproj /t:MyTarget /p:Item1=Name1;Item2=Name2;ItemN=NameN ('N' は説明のためのみ)

これは可能ですか?

事前に感謝します。どんな助けでも大歓迎です。

4

1 に答える 1

7

このようにビルドプロジェクトを呼び出すと...

> msbuild My.proj /p:ItemProperty="1;2;3;4;5"

そして、プロジェクトはこれを行います...

<ItemGroup>
    <FromProperty Include="$(ItemProperty)" />
</ItemGroup>
<Message Text="%(FromProperty.Identity)" />

...基本的に、プロパティをアイテムの配列に変換しました。動的に作成されたプロパティに変換する場合、スクリプトが作成される前に名前がわからないため、スクリプトの残りの部分でそれらを参照する簡単な方法はありません。

MSBuild Trickeryからの抜粋、トリック #30 には、この操作に関する追加の詳細が多数のページに記載されています

于 2012-08-04T18:39:24.767 に答える