MSBuild ItemGroup, за исключением каталогов .svn и файлов внутри - PullRequest
40 голосов
/ 16 сентября 2008

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

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

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

Ответы [ 4 ]

65 голосов
/ 16 сентября 2008

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

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

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

12 голосов
/ 05 марта 2009

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

4 голосов
/ 19 декабря 2008

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

<LibraryFiles  
    Include="$(LibrariesReleaseDir)**\*.*"  
    Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
1 голос
/ 30 апреля 2012

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

<ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...