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>