40

MSBuild ItemGroup を構築して、.svn ディレクトリとその中のすべてのファイルを (再帰的に) 除外するにはどうすればよいですか? 私が持っている:

<ItemGroup> 
     <LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>

現時点では、これは何も除外しません!

4

4 に答える 4

64

ご協力ありがとうございます。次のように並べ替えることができました。

<ItemGroup>
     <LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" 
                   Exclude="$(LibrariesReleaseDir)\**\.svn\**" />
</ItemGroup>

パターン マッチングは基本的にファイルに対して実行されるため、MSBuild がディレクトリ自体を除外するには、.svnディレクトリ ( ) の下のすべてを除外する必要があります。.svn\\**.svn

于 2008-09-16T13:57:29.650 に答える
12

したがって、問題は、msbuild で何らかの理由で変数をチェーンすることです。MSBuildProjectDirectory 変数に基づく相対パスのみを使用する必要があることに注意してください。

<CreateItem Include="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\*.*"
            Exclude="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

以下は機能しません。

<PropertyGroup>
    <WebProjectDir>$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI</WebProjectDir>
</PropertyGroup>
<CreateItem Include="$(WebProjectDir)\**\*.*"
            Exclude="$(WebProjectDir)\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

非常に奇妙な!私はこれに3時間ほど費やしました。

于 2009-03-04T22:23:18.870 に答える
3

これは、本当に再帰的にそれを行うためのさらに良い方法です。あなたのソリューションを1レベル以上深くすることはできないようです:

<LibraryFiles  
    Include="$(LibrariesReleaseDir)**\*.*"  
    Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
于 2008-12-19T13:20:33.043 に答える
1

含める/除外するアプローチを使用していくつかの不具合に遭遇したので、代わりに私のために働いたものを次に示します。

<ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
于 2012-04-30T16:23:24.083 に答える