我有一个自定义MSBuild任务来缩小一些JavaScript文件。我创建了一个,ItemGroup以定义要缩小的文件,不应该缩小的文件。我的.csproj文件中包含以下内容:
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js;obj\**\*.*;**\_references.js;[snip]" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我想将该属性分成几行以提高可读性(被删除的部分很长,将来可能会更长),所以我尝试了一下:
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js" />
<JS Exclude="obj\**\*.*" />
<JS Exclude="**\_references.js" />
[snip]
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
但这给了我这个构建错误:
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js;obj\**\*.*;**\_references.js;[snip]" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
当我Include=""在这些后续元素中添加一个空的include()时,也会发生同样的情况。(在引号内添加一些内容可消除该错误,但在JS变量中包含额外的“文件”。)
然后,我从MSBuild Items的文档中了解到,该Exclude属性仅影响该Include属性在同一元素中添加的项目。
我还尝试仅使用一个Exclude字符串,但是将字符串本身分成多行,如下所示:
<ItemGroup>
<JS Include="**\*.js"
Exclude="**\*.min.js;
obj\**\*.*;
**\_references.js;
[snip]" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
看起来还可以,但是当我随后从Visual Studio保存项目时,行尾被弄乱了,所以变成了:
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js;
 obj\**\*.*;
 **\_references.js;
 [snip]" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
(这并没有破坏构建中的任何内容,但是破坏了将字符串分成多行的目的。)
如何将这些排除项分成多行?
我找到了有关从中排除文件的答案Content,这也是的一部分ItemGroup。所以我尝试了:
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js" />
<JS Remove="obj\**\*.*" />
<JS Remove="**\_references.js" />
[snip]
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
那行得通。JS现在只包含我想要的文件,并且csproj文件更具可读性。
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |