MSBuild ItemGroup, за исключением каталогов и файлов .svn внутри
-
09-06-2019 - |
Вопрос
Как я могу создать 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>