В MSBuild 12.0 можно ли включать файлы в <ItemGroup>
только в том случае, если выполнено условие?ItemGroup включает файлы с условием
Мой вариант использования - это то, что я хочу создать коллекцию всех файлов .csproj
, для которых существует файл .nuspec
с таким же именем (без расширения).
- root_dir\
- build.proj
- Project1\
- Project1.csproj
- Project1.nuspec
- Project2\
- Project2.csproj
- Project3\
- Project3.csproj
- Project3.nuspec
Я попытался сделать это с помощью преобразований MSBuild, но это не сработало.
<ItemGroup>
<ProjectWithNuspec Include="*\*.csproj"
Condition="Exists('@(ProjectWithNuspec->'%(Filename).nuspec')')">
</ItemGroup>
Элемент ProjectWithNuspec
, кажется, не быть инициализирован перед состояние оценивается.
я выяснить способ сделать это в два этапа:
- Включать все файлы
- Удалить файлы, которые не удовлетворяют условию
<ItemGroup>
<ProjectWithNuspec Include="*\*.csproj">
<ProjectWithNuspec Remove="%(ProjectWithNuspec.Identity)"
Condition="!Exists('@(ProjectWithNuspec->'%(Filename).nuspec')')">
</ItemGroup>
В идеале, I» d хотел бы иметь возможность сделать это за один шаг.
Вы находитесь внутри элемента «Цель» или внутри элемента «Проект»? Я принимаю объект Target, когда вы используете ItemGroup Remove ... –
Внутри элемента Target. –