MSBuild ItemGroup, за исключением каталогов и файлов .svn внутри

StackOverflow https://stackoverflow.com/questions/72153

Вопрос

Как я могу создать MSBuild ItemGroup, чтобы исключить каталоги .svn и все файлы внутри (рекурсивно).У меня есть:

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

На данный момент, но это ничего не исключает!

Это было полезно?

Решение

Спасибо за помощь, удалось отсортировать следующим образом:

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

Оказывается, сопоставление с образцом в основном выполняется для файлов, поэтому вам придется исключить все НИЖЕ .svn каталоги (.svn\\**) для MSBuild, чтобы исключить .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>

Очень странно!Я потратил на это около 3 часов.

Вот еще лучший способ сделать это, по-настоящему рекурсивно.Кажется, я не могу заставить ваше решение углубляться более чем на 1 уровень:

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

Я столкнулся с некоторыми сбоями при использовании подхода «Включить/исключить», поэтому вместо этого у меня сработало вот что:

<ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top