2010-03-03 51 views
0

我在我的csproj中定義了一個AfterCompile目標,它涉及縮小和組合JS和CSS。然後我將它們添加到ItemGroup Content並刪除不必要的文件,但刪除參數似乎不起作用。爲什麼不刪除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> 

調試消息仍然顯示@(內容)作爲具有不必要的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). 

你仍然有問題?