简单了解 .NET 项目文件中的“项”

什么是项?
<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

注意:Include 属性是相对于项目文件的文件夹 $(MSBuildProjectPath) 解释的路径。

综上所得,项

  • 必须是 ItemGroup 的元素
  • Compile 是项的类型,Include 是项的属性。
如何在项文件中引用项?
@(Compile)

引用项用 @ 符号,属性用 $ 符号。

项通配符
  • (?) 通配符匹配单个字符。
  • (*) 通配符匹配零个或多个字符。
  • (**) 通配符序列匹配部分路径。
什么是项元数据?
<ItemGroup>
    <CSFile Include="one.cs;two.cs">
        <Culture>true</Culture>
    </CSFile>
</ItemGroup>

其中项类型 CSFile 中包含 Culture 项元数据。
综上所示,项元数据是

  • 项元素的子元素。
  • 子元素的名称是元数据的名称。
  • 子元素的值是元数据的值。
怎么引用项元数据?
<ItemGroup>
    <CSFile Include="one.cs;two.cs">
        <Culture>true</Culture>
    </CSFile>
</ItemGroup>
    <Target Name="Batching">
        <Message Text="@(CSFile)" Condition=" '%(Culture)' == 'true' "/>
    </Target>

可以使用 %(CSFile.Culture) 引用项元数据。
常见项元数据:https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-well-known-item-metadata?view=vs-2022

项定义

从.NET Framework 3.5 起,即可使用 ItemDefinitionGroup 元素向任何项类型添加默认元数据。 与已知元数据一样,默认元数据与指定项类型的所有项关联。 可在项定义中显式重写默认元数据。 例如,下面的 XML 向 Compile 项“one.cs”和“three.cs”提供值为“Monday”的 BuildDay 元数据 。 代码会向“two.cs”项提供值为“Tuesday”的 BuildDay 元数据。

<ItemDefinitionGroup>
    <Compile>
        <BuildDay>Monday</BuildDay>
    </Compile>
</ItemDefinitionGroup>
<ItemGroup>
    <Compile Include="one.cs;three.cs" />
    <Compile Include="two.cs">
        <BuildDay>Tuesday</BuildDay>
    </Compile>
</ItemGroup>

需要参考 项定义 链接:https://docs.microsoft.com/zh-cn/visualstudio/msbuild/item-definitions?view=vs-2022
这个链接描述了如何自定义自己的一个项。

好了,这里只做初步的介绍。需要更详细的信息以及操作实例,自己去查官方文档吧!

posted @ 2022-02-11 11:17  RafaelLxf  阅读(168)  评论(0)    收藏  举报