gpt4 book ai didi

msbuild - 将自定义元数据从另一个项目组添加到已定义的项目组

转载 作者:行者123 更新时间:2023-12-04 20:20:12 26 4
gpt4 key购买 nike

我有以下几点:

<ItemGroup>
<Files Include="C:\Versioning\**\file.version" />
<ItemGroup>

<ReadLinesFromFile File="%(Files.Identity)">
<Output TaskParameter="Lines" ItemName="_Version"/>
</ReadLinesFromFile>

每个 file.version 文件只包含一行 - 你猜对了 - 形式 Major.Minor.Build.Revision 的一个版本.

我希望能够将 Files 中的每个项目关联起来ItemGroup 及其 _Version通过将后者添加为元数据,以便我可以执行以下操作:
<Message Text="%(Files.Identity): %(Files.Version)" />

并让 MSBuild 打印出一个很好的文件版本关联列表。

这可能吗?

最佳答案

这可以通过使用目标批处理来添加您的 Version 来实现。元数据的成员。这涉及移动您的 ReadLinesFromFile操作到自己的目标,使用 @(Files) ItemGroup 作为输入。

这会导致为 ItemGroup 中的每个项目执行目标,允许您从每个单独的文件中读取内容(即版本号),然后更新该项目以添加 Version元数据:

<Project DefaultTargets="OutputFilesAndVersions" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Files Include="C:\Versioning\**\file.version" />
</ItemGroup>
<Target Name="OutputFilesAndVersions" DependsOnTargets="RetrieveVersions">
<Message Text="@(Files->'%(Identity): %(Version)')" />
</Target>
<Target Name="RetrieveVersions" Inputs="@(Files)" Outputs="%(Files.Identity)">
<ReadLinesFromFile File="%(Files.Identity)">
<Output TaskParameter="Lines" PropertyName="_Version"/>
</ReadLinesFromFile>
<PropertyGroup>
<MyFileName>%(Files.Identity)</MyFileName>
</PropertyGroup>
<ItemGroup>
<Files Condition="'%(Files.Identity)'=='$(MyFileName)'">
<Version>$(_Version)</Version>
</Files>
</ItemGroup>
</Target>
</Project>

关于msbuild - 将自定义元数据从另一个项目组添加到已定义的项目组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7420812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com