2011-09-29 25 views
13

這應該很簡單,但我找不到如何做到這一點(或者也許這是不可能的)。如何做一個MSBuild條件測試,如果一個ItemGroup包含一個項目?

在MSBuild中我有一個ItemGroup是一個文件列表。 我想執行一個任務只有一個特定的文件是在像的ItemGroup

東西:

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

沒有辦法做到這一點?最好不寫一個自定義任務。

編輯:文件列表只與條件有關。否則它與任務無關。

回答

14

嘗試

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

+0

是的,這應該工作。 %將通過所有已存在的文件「迭代」...相當於: etc ... –

+0

也許我誤解了這一點,但實際上我只想執行一次拷貝,而我正在拷貝的文件不在文件列表中,它有些不同。文件列表僅適用於條件 – Ray

+3

它將循環執行多個批處理,但複製任務只會在條件爲真時執行一次。 @(文件)不需要是您正在複製的文件集,我們在此僅使用它來確保只有在@(文件)中存在「C:\ MyFile.txt」時才執行此複製任務。 – radical

相關問題