2011-09-29 1 views
13

これは簡単なはずですが、これを行う方法がわかりません(または可能ではないかもしれません)。ItemGroupにアイテムが含まれている場合、MSBuild Conditionテストを行うにはどうすればよいですか?

MSBuildには、ファイルのリストであるItemGroupがあります。 私は、特定のファイルがその中にある場合にのみタスクを実行するItemGroup

何かのように:これを行うには

<Copy Condition="@(Files) <contains> C:\MyFile.txt" .... /> 

任意の方法?好ましくは、カスタムタスクを書き込まずに。

編集:ファイルのリストは、条件とのみ関係あります。それ以外の場合は、タスクとは関係ありません。

答えて

14

はい、これは動作するはず

<Copy Condition="'%(Files.Identity)' == 'C:\MyFile.txt'" .. />

+0

を試してみてください。 %は、すべてのファイルを介して "反復"します... <コピー条件= "'$(File1.Identity)' == 'C:\ MyFile.txt'" .. /> <コピー"$(File2.Identity)" == 'C:\ MyFile.txt' ".. /> <コピー条件=" '$(File3.Identity)' == 'C:\ MyFile.txt' ".. /> など... –

+0

私はこれを誤解しているかもしれませんが、実際にコピーを1回だけ実行したいと思います。コピーしているものはファイルのリストにはありません。ファイルのリストは、条件 – Ray

+3

のみです。複数のバッチを反復処理しますが、条件が真である場合、コピータスクは1回だけ実行されます。 @(Files)は、コピーしているファイルのセットである必要はありません。ここでは、C:\ MyFile.txtが@(Files)に存在する場合にのみ、 。 – radical

関連する問題