如何根据要添加的项目的名称为"项目组"中的项目设置属性?



假设我的msbuild文件中有以下ItemGroup

<ItemGroup>
<!-- build all the .proto files -->
<MyGroup Include="**/*.txt" MyProperty="[something here to extract metadata for each item]" />
</ItemGroup>

我可以在括号中放入什么以在填充项组时设置属性?具体来说,我想获取文件的项目相对路径(没有文件名(。这样的事情可能吗?

您可以在项目内使用已知的项目元数据。

<Project>
<ItemGroup>
<TextFiles Include="**/*.txt"
MyProperty="Included file %(Filename)(Extension: %(Extension)) in directory %(RelativeDir)" />
</ItemGroup>
<Target Name="ListTextFiles">
<Message Importance="high" Text="@(TextFiles->'%(Identity): %(MyProperty)', '%0A')" />
</Target>
</Project>

文件结构为

fileA.txt
SomeSubfolderfileB.txt
SomeSubfolderfileC.txt

指纹:

>dotnet msbuild -t:ListTextFiles -nologo
fileA.txt: Included file fileA(Extension: .txt) in directory
SomeSubfolderfileB.txt: Included file fileB(Extension: .txt) in directory SomeSubfolder
SomeSubfolderfileC.txt: Included file fileC(Extension: .txt) in directory SomeSubfolder

最新更新