2011-01-05 47 views
0

無論如何修改項目組中的每個項目?例如,鑑於這一項目:MSBuild解析項目元數據

<_CustomAreas Include="..\My.Project.*\Areas\**\*.*" Condition="'$(AppBuildFolder)' == ''" /> 

我要刪除」 .. \ My.Product *部分基本上我們有一個包含MVC地區單獨的項目,並在封裝/部署(MSDeploy),我們希望。 。將它們複製到主項目在此處,使用組:

<FilesForPackagingFromProject Include="%(_CustomAreas.Identity)"> 
    <DestinationRelativePath>Areas\%(relativedir)%(Filename)%(Extension)</DestinationRelativePath> 
</FilesForPackagingFromProject> 

$(relativedir)即將通過的」 .. \ My.Project.Plugin1 \地區* *。「,並且它以包裝ZipFileRoot\My.Project.Plugin1\Areas(The ..退出硬編碼的區域,然後它只是爲插件\區域創建文件夾)結束,我希望它實際上最終都在ZipFileRoot\Areas

感謝 安迪

回答

0

RegexReplace(憑證:客人/客人)任務應該能夠匹配\My.Product.*並用空字符串替換。

像這樣的東西應該工作:(未經測試,需要驗證轉義)

<RegexReplace Input="%(_CustomAreas)" Expression="\\My\.Product\..*" Replacement="" Count="-1"> 
    <Output ItemName="_CustomAreas" TaskParameter="Output" /> 
</RegexReplace> 

有我一點點工作得到MSBuild Community Tasks啓動和運行,但不夠好東西在裏面找到它值得努力。

0

隨着4.0的MSBuild您可以直接在腳本中使用string(或使用內聯任務)。使用此選項,你可以編輯你relativedir刪除My.Project。*的一部分。

您可以在本文中看到示例:http://sedodream.com/2010/03/07/MSBuild40PropertyFunctionsPart1.aspx

+0

我也喜歡這個答案,但我不清楚如何在ItemGroup上進行操作。 – Andy 2011-01-06 19:07:03

0

ItemGroups中的項目可以具有Exclude屬性,允許您指定要忽略的項目。

+0

這不是我要求做的。 – Andy 2013-05-11 19:32:32