.net MSBuild ItemGroup,不包括中的.svn目录和文件
如何构造MSBuild项目组以排除.svn目录和其中的所有文件(递归)。我有:.net MSBuild ItemGroup,不包括中的.svn目录和文件,.net,msbuild,continuous-integration,.net,Msbuild,Continuous Integration,如何构造MSBuild项目组以排除.svn目录和其中的所有文件(递归)。我有: <ItemGroup> <LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" /> </ItemGroup> 目前,但这并不排除任何情况 感谢您的帮助,我们将其分类如下: <ItemGroup> <LibraryFiles Include="$(Libr
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>
目前,但这并不排除任何情况 感谢您的帮助,我们将其分类如下:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*"
Exclude="$(LibrariesReleaseDir)\**\.svn\**" />
</ItemGroup>
结果表明,模式匹配基本上是在文件上运行的,因此您必须排除MSBuild的
.svn
目录(.svn\\**
)下的所有内容,以排除.svn
目录本身。这是一种更好的方法,真正是递归的。我似乎无法让您的解决方案深入到1级以上:
<LibraryFiles
Include="$(LibrariesReleaseDir)**\*.*"
Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
因此,问题在于出于某种原因在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>
$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI
很奇怪!我花了大约3个小时来做这件事。我在使用Include/Exclude方法时遇到了一些小问题,因此这里有一些对我有用的东西:
@Kieran Benton:感谢更新,我将提交一个connect.microsoft.com请求,以澄清MSDN文档。我注意到您还将排除值的前缀添加为“$(Libraries ReleaseDir)\**”(与OP中的值相比)。这很重要吗?如果文件名中没有点,那么这对.svn\entries文件也有效吗?
<ItemGroup>
<MyFiles Include=".\PathToYourStuff\**" />
<MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>