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

时间:2008-09-16 13:28:07

标签: .net msbuild continuous-integration

如何构建MSBuild ItemGroup以排除.svn目录和(递归)中的所有文件。我有:

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

此刻,但这并不排除任何事情!

4 个答案:

答案 0 :(得分:65)

感谢您的帮助,设法按如下方式对其进行排序:

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

结果模式匹配基本上在文件上运行,因此您必须排除.svn目录(.svn\\**)以下的所有内容,以便MSBuild排除.svn目录本身。

答案 1 :(得分: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个小时。

答案 2 :(得分:4)

这是一种更好的方法,真正递归。我似乎无法让你的解决方案超过1级深度:

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

答案 3 :(得分:1)

我使用Include / Exclude方法遇到了一些问题,所以这里的内容对我有用:

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