2011-07-13 12 views
3

私は、拡張子に基づいていくつかのファイルを選択するが、いくつかのフォルダは処理されないようにするタスクがある。問題は、Excludeフィルタがすべてのファイルが含まれている最後にIncludeフィルタの前に適用されているようです。MSBuild exclude/include order

私はファイル選択場所です。この場合

<CreateItem Exclude="**\.svn\**; 
    $(MSBuildProjectDirectory)\obj\**; 
    $(MSBuildProjectDirectory)\bin\**; 
    $(MSBuildProjectDirectory)\My Project\*.*; 
    $(MSBuildProjectDirectory)\Properties\*.*; 
    $(MSBuildProjectDirectory)\Dependencies\*.*; 
    $(MSBuildProjectDirectory)\Installation\**; 
    $(MSBuildProjectDirectory)\Extenders\**\*.*" 
Include="$(MSBuildProjectDirectory)\**\*.ascx; 
    $(MSBuildProjectDirectory)\**\*.aspx; 
    $(MSBuildProjectDirectory)\**\*.css; 
    $(MSBuildProjectDirectory)\**\*.xml; 
    $(MSBuildProjectDirectory)\**\*.xslt; 
    $(MSBuildProjectDirectory)\**\*.js; 
    $(MSBuildProjectDirectory)\**\*.resx; 
    $(MSBuildProjectDirectory)\**\*.rpt; 
    $(MSBuildProjectDirectory)\**\*.gif; 
    $(MSBuildProjectDirectory)\**\*.jpg; 
    $(MSBuildProjectDirectory)\**\*.png;" 

>

を「除外」フォルダのいずれかが拡張子が「含める」リストと一致し、それはまだする任意のファイルが含まれている場合最終的なリストに含めることができます。

したがって、除外されたフォルダのすべてのファイルが実際に除外されるようにするにはどうすればよいのでしょうか。

EDIT:MsBuildファイルにこれが失敗する原因となった別の問題があるようです。 期待どおりに動作しています。

答えて

2

MSDNで、そのCreateItemタスクは廃止予定です。 .net 3.5ではターゲットに埋め込むことができるので、ItemGroupを使用することをお勧めします。あなたのケースでは、あなたには、後に実行される除外を確認したい場合は、あなたが書くことができます。

<ItemGroup> 
    <YourItemName Include="$(MSBuildProjectDirectory)\**\*.ascx;$(MSBuildProjectDirectory)\**\*.aspx;$(MSBuildProjectDirectory)\**\*.css;$(MSBuildProjectDirectory)\**\*.xml;$(MSBuildProjectDirectory)\**\*.xslt;$(MSBuildProjectDirectory)\**\*.js;$(MSBuildProjectDirectory)\**\*.resx;$(MSBuildProjectDirectory)\**\*.rpt;$(MSBuildProjectDirectory)\**\*.gif;$(MSBuildProjectDirectory)\**\*.jpg;$(MSBuildProjectDirectory)\**\*.png;" Exclude="**\.svn\**;$(MSBuildProjectDirectory)\obj\**;$(MSBuildProjectDirectory)\bin\**;$(MSBuildProjectDirectory)\My Project\*.*;$(MSBuildProjectDirectory)\Properties\*.*;$(MSBuildProjectDirectory)\Dependencies\*.*;$(MSBuildProjectDirectory)\Installation\**;$(MSBuildProjectDirectory)\Extenders\**\*.*"/> 
</ItemGroup> 

私はあなたがすでにそれを整理知っているが、私は他の同様の問題を得た場合、誰かにそれを掲示しています。 ItemGroupは、複数のソースやコードの多くの場所からのデータを含める場合には、はるかに役立ちます。

+1

Include属性なしでExclude属性を持つItemGroup要素を持つことはできません。したがって、最初のサンプルはコンパイルされません。 – realMarkusSchmidt

+0

ありがとう!私はそれが解析される場合、私は正しくチェックしなかった、私は次回より慎重になります。混乱を避けるためにこの例を削除しました –

+0

あなたがする必要はなかったとしても、答えをありがとう。あなたは確かに私を助けました。 –