为什么';是否删除MSBuild项组的内容工作?
我在csproj中定义了一个为什么';是否删除MSBuild项组的内容工作?,msbuild,Msbuild,我在csproj中定义了一个AfterCompile目标,它涉及缩小JS和CSS并将其组合。然后我将它们添加到ItemGroupContent并删除不必要的文件,但是remove参数似乎不起作用 <Target Name="AfterCompile"> <ItemGroup> <JS_Combine Include="js\c??.*.min.js" /> <CSS_Combine Include="css\c??.*.min.css
AfterCompile
目标,它涉及缩小JS和CSS并将其组合。然后我将它们添加到ItemGroupContent
并删除不必要的文件,但是remove参数似乎不起作用
<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文件。有人能告诉我发生了什么吗?为了重现您的情况,我创建了这个示例脚本
<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).