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

发布于 2024-07-04 02:16:21 字数 232 浏览 5 评论 0原文

如何构造 MSBuild ItemGroup 以排除 .svn 目录及其中的所有文件(递归地)。 我已经:

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

目前,但这并不排除任何事情!

How can I construct a MSBuild ItemGroup to exclude .svn directories and all files within (recursively). I've got:

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

At the moment, but this does not exclude anything!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

-残月青衣踏尘吟 2024-07-11 02:16:22

所以问题出在 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 个小时在这件事上。

So the issue is with chaining variables for some reason in msbuild. The following works for me, notice that I have to only use relative paths based on the MSBuildProjectDirectory variable.

<CreateItem Include="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\*.*"
            Exclude="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

The following does not work:

<PropertyGroup>
    <WebProjectDir>$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI</WebProjectDir>
</PropertyGroup>
<CreateItem Include="$(WebProjectDir)\**\*.*"
            Exclude="$(WebProjectDir)\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

Very strange! I just spent like 3 hrs on this one.

痴骨ら 2024-07-11 02:16:22

我在使用“包含/排除”方法时遇到了一些小故障,所以这里有一些对我有用的方法:

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

I've run into some glitches using the Include/Exclude approach, so here's something that's worked for me instead:

<ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
你爱我像她 2024-07-11 02:16:22

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

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

Here's an even better way to do it, truly recursively. I can't seem to get your solution to go more than 1 level deep:

<LibraryFiles  
    Include="$(LibrariesReleaseDir)**\*.*"  
    Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
幸福丶如此 2024-07-11 02:16:21

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

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

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

Thanks for your help, managed to sort it as follows:

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

Turns out the pattern matching basically runs on files, so you have to exclude everything BELOW the .svn directories (.svn\\**) for MSBuild to exclude the .svn directory itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文