如何构建MSBuild ItemGroup以排除.svn目录和(递归)中的所有文件。我有:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>
此刻,但这并不排除任何事情!
答案 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>