2010-03-03 2 views
0

У меня есть цель AfterCompile, определенная в моем csproj, которая включает в себя минимизацию и объединение JS и CSS. Затем я добавляю их в ItemGroup Content и удаляю ненужные файлы, однако параметр Remove не работает.Почему нет содержимого Удалить работу для MSBuild ItemGroup?

<Target Name="AfterCompile"> 
    <ItemGroup> 
    <JS_Combine Include="js\c??.*.min.js" /> 
    <CSS_Combine Include="css\c??.*.min.css" /> 
    </ItemGroup> 
    <!-- Combine JS --> 
    <ReadLinesFromFile File="%(JS_Combine.Identity)"> 
    <Output TaskParameter="Lines" ItemName="JSLines" /> 
    </ReadLinesFromFile> 
    <WriteLinesToFile File="js\combined.min.js" Lines="@(JSLines)" Overwrite="true" /> 
    <!-- Combine CSS --> 
    <ReadLinesFromFile File="%(CSS_Combine.Identity)"> 
    <Output TaskParameter="Lines" ItemName="CSSLines" /> 
    </ReadLinesFromFile> 
    <WriteLinesToFile File="css\combined.min.css" Lines="@(CSSLines)" Overwrite="true" /> 
    <!-- Tidy up --> 
    <ItemGroup> 
    <Content Include="js\combined.min.js" /> 
    <Content Include="css\combined.min.css" /> 
    <Content Remove="@(JS_Combine)" /> 
    <Content Remove="@(CSS_Combine)" /> 
    </ItemGroup> 
     <!-- DEBUG message --> 
    <Message Text="DEBUG: @(Content)" Importance="high" /> 
</Target> 

Отладочное сообщение по-прежнему показывает @ (Content) как ненужные js-файлы. Может ли кто-нибудь сказать мне, что происходит?

ответ

1

Для того, чтобы воссоздать вам ситуацию, я создал этот пример сценария

<Project DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <Target Name="Demo"> 
    <ItemGroup> 
     <JS_Combine Include="js\c01.min.js;js\c02.min.js;js\c03.min.js;" /> 
     <CSS_Combine Include="css\c01.min.css;css\c02.min.css;css\c03.min.css;" /> 
    </ItemGroup> 
    <ItemGroup> 
     <Content Include="@(JS_Combine);@(CSS_Combine)"/> 
    </ItemGroup> 

    <Message Text="Content Before: @(Content)" Importance="high" /> 
    <!-- Tidy up --> 
    <ItemGroup> 
     <Content Include="js\combined.min.js" /> 
     <Content Include="css\combined.min.css" /> 
     <Content Remove="@(JS_Combine)" /> 
     <Content Remove="@(CSS_Combine)" /> 
    </ItemGroup> 

    <Message Text="-------------------------"/> 
    <Message Text="Content After: @(Content)" Importance="high" /> 
    </Target> 

</Project> 

Это работает для меня вот результаты:

Project "C:\Data\Development\My Code\Community\MSBuild\RemoveTest\Remove01.proj" on node 
1 (default targets). 
Demo: 
    Content Before: js\c01.min.js;js\c02.min.js;js\c03.min.js;css\c01.min.css;css\c02.min.c 
    ss;css\c03.min.css 
    ------------------------- 
    Content After: js\combined.min.js;css\combined.min.css 
Done Building Project "C:\Data\Development\My Code\Community\MSBuild\RemoveTest\Remove01. 
proj" (default targets). 

Вы все еще возникают проблемы с этим?

Смежные вопросы