Подтвердить что ты не робот

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

Как я могу построить элементную группу MSBuild для исключения каталогов .svn и всех файлов внутри (рекурсивно). У меня есть:

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

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

4b9b3361

Ответ 1

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

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

Вызывает сопоставление шаблонов, в основном работает с файлами, поэтому вы должны исключать все НИЖЕ каталоги .svn (.svn\\**) для MSBuild, чтобы исключить сам каталог .svn.

Ответ 2

Итак, проблема связана с цепочкой переменных по какой-либо причине в 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 часа.

Ответ 3

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

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

Ответ 4

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

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