在 MsBuild 中,PropertyGroup 和 ItemGroup 之间有什么区别

本文关键字:之间 什么 区别 ItemGroup MsBuild PropertyGroup | 更新日期: 2023-09-27 18:34:47

我可以编译一个PropertyGroup引用的.cs文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <AssemblyName>MSBuildSample</AssemblyName>
        <OutputPath>Bin'</OutputPath>
        <Compile>helloConfig.cs</Compile>
    </PropertyGroup>
    <Target Name="Build">
        <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
        <Csc Sources="$(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe"/>
    </Target>        
</Project>

或使用项组执行相同的操作:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">    
    <ItemGroup>
        <Compile Include="helloConfig.cs" />
    </ItemGroup>
    <PropertyGroup>
        <AssemblyName>MSBuildSample</AssemblyName>
        <OutputPath>Bin'</OutputPath>
    </PropertyGroup>
    <Target Name="Build">
        <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
        <Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe"/>
    </Target>  
</Project>

我知道使用 ItemGroup 应该是首选方法,但是我应该什么时候使用这些属性中的每一个?

在 MsBuild 中,PropertyGroup 和 ItemGroup 之间有什么区别

属性组视为单个变量的集合,属性只能保存一个值。

而项组类似于可以保存零个、一个或多个值的数组或集合。您还可以迭代物料组,这在要对多个物料执行相同任务时通常很有用。一个常见的例子是编译许多文件。

相关文章: