在MSBuild 12.0中,我能否在满足某个条件时仅包含
我的使用案例是,我想创建一个集合,其中包含所有具有相同名称(没有扩展名)的
理想情况下,我希望能够一步完成此操作。
<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>
理想情况下,我希望能够一步完成此操作。