MSBuild ItemGroup, исключая каталоги и файлы .svn внутри
Как я могу построить элементную группу MSBuild для исключения каталогов .svn и всех файлов внутри (рекурсивно). У меня есть:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>
На данный момент, но это ничего не исключает!
Ответы
Ответ 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>