2016-07-05 110 views
1

我有一個自定義的MSBuild任務來縮小一些JavaScript文件。我創建了一個ItemGroup來定義我想縮小哪些文件,哪些不應該。我在.csproj文件中的以下內容:如何將一個ItemGroup的Excludes分成多行?

<ItemGroup> 
    <JS Include="**\*.js" Exclude="**\*.min.js;obj\**\*.*;**\_references.js;[snip]" /> 
</ItemGroup> 

我想,物業成幾行拆分,以更好的可讀性(該文檔片斷部分很長,可能會在未來變得更長),所以我想這:

<ItemGroup> 
    <JS Include="**\*.js" Exclude="**\*.min.js" /> 
    <JS Exclude="obj\**\*.*" /> 
    <JS Exclude="**\_references.js" /> 
    [snip] 
</ItemGroup> 

但是,這給了我這個生成錯誤:

error MSB4066: The attribute "Exclude" in element <JS> is unrecognized. 

同樣的,當我添加了一個空的包括(Include="")發生於隨後埃爾對此語句。 (把引號裏面的東西去掉了錯誤,但包含在JS VAR額外的「文件」。)

我再從the docs for MSBuild ItemsExclude屬性隻影響在同一元素的Include屬性添加的項目的經驗教訓。

我也試過只使用一個Exclude串,但是分割字符串本身成多行,像這樣:

<ItemGroup> 
    <JS Include="**\*.js" 
     Exclude="**\*.min.js; 
       obj\**\*.*; 
       **\_references.js; 
       [snip]" /> 
</ItemGroup> 

這看起來不錯,但是當我隨後所保存的從Visual Studio項目,該行結束相互糾纏,所以它變成了這樣:

<ItemGroup> 
    <JS Include="**\*.js" Exclude="**\*.min.js;&#xD;&#xA;     obj\**\*.*;&#xD;&#xA;     **\_references.js;&#xD;&#xA;     [snip]" /> 
</ItemGroup> 

(這並沒有打破在構建任何東西,但擊敗分割字符串成多行的目的。)

如何將這些排除分爲多行?

回答

1

我找到了this answer about excluding files from Content,這也是ItemGroup的一部分。所以我試過了:

<ItemGroup> 
    <JS Include="**\*.js" Exclude="**\*.min.js" /> 
    <JS Remove="obj\**\*.*" /> 
    <JS Remove="**\_references.js" /> 
    [snip] 
</ItemGroup> 

工作。 JS現在只包含我想要的文件,並且csproj文件更具可讀性。