MSBuild ItemGroup,不包括.svn目录和文件

我怎样才能构build一个MSBuild ItemGroup排除.svn目录和(recursion)内的所有文件。 我有:

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

此刻,但这并不排除任何东西!

感谢您的帮助,设法将其分类如下:

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

事实certificate,模式匹配基本上运行在文件上,所以你必须排除MSBuild的.svn目录( .svn\\** )以下的所有内容以排除.svn目录本身。

所以问题是在msbuild中出于某种原因链接variables。 以下工作对我来说,注意我只能使用基于MSBuildProjectDirectoryvariables的相对path。

 <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小时在这一个。

这是一个更好的方式,真正recursion的。 我似乎无法得到您的解决scheme超过1级深:

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

我使用Include / Exclude方法遇到了一些小问题,所以下面是我的工作:

 <ItemGroup> <MyFiles Include=".\PathToYourStuff\**" /> <MyFiles Remove=".\PathToYourStuff\**\.svn\**" /> </ItemGroup>