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

Sco*_*ham 10 msbuild

可以使用以下任一方法创建属性:

<Target Name="A">
    <PropertyGroup>
        <DogSound>Bark</DogSound>
    </PropertyGroup>
</Target>

<Target Name="B">
    <CreateProperty Value="Bark">
        <Output TaskParameter="Value" PropertyName="DogSound"/>
    </CreateProperty>
</Target>
Run Code Online (Sandbox Code Playgroud)

但是,如果有的话,目标A和B的语义之间有什么区别?

谢谢.


注意:我正在使用msbuild 3.5.我相信PropertyGroup语法在早期版本的msbuild中的目标内部不起作用,但对于ItemGroups也是如此.CreateItem已被弃用,但CreateProperty没有,所以我想知道CreateProperty是否还有使用PropertyGroup的东西,如果是的话,那是什么.

Say*_*imi 7

不要在MSBuild 4.0中使用CreateProperty和CreateItem.而只是将ItemGroup和PropertyGroup直接放在目标内.

你没有在目标内部使用MSBuild 3.5 ItemGroup/PropertyGroup之前是正确的,所以人们会使用CreateProperty和CreateItem任务.在MSBuild 3.5之后,您应该只使用ItemGroup和PropertyGroup.虽然有一些极端的极端情况,你仍然可能需要CreateProperty和CreateItem,但我不担心这些.这些场景涉及转义以及CreateItem如何比ItemGroup更少限制.但实际上99%的人都不会面对这一点.

  • 我只有在只有在运行时才知道新名称的情况下才使用CreateItem或CreateProperty。 (2认同)