msbuild - 使用 属性 或 ITEM 存储值的区别
msbuild - difference between using PROPERTY or ITEM to store values
在我现有的MSBuild
XML中,我有这个
<Exec
EchoOff="true"
StandardOutputImportance="low"
StandardErrorImportance="low"
IgnoreExitCode="true"
ConsoleToMSBuild="true"
Command='
"$(CompilerExe)" ^
$(HWProcessor) ^
$(IncludeDirs) ^
$(CompilerOptions) ^
$(CompileDefines) ^
"$(CPPFILE)" ^
-MM
'>
<Output TaskParameter="ConsoleOutput" PropertyName="output_cppdeps"/>
<Output TaskParameter="ExitCode" PropertyName="exitcode_cppdeps"/>
</Exec>
<ItemGroup>
<Item_output_cppdeps Include="$(output_cppdeps)" />
</ItemGroup>
任务Exec
执行后,输出output_cppdeps
转化为Item
;有功能上的原因吗?
与 Property
相比,您可以在 Item
上执行更多操作吗?还是只是风格?
Are there more operations you can do on an Item vs a Property? Or is it simply style?
在回答这个问题之前,我们需要了解Property
和Item
的功能。
项目功能:https://msdn.microsoft.com/en-us/library/ee886422.aspx
属性 函数: https://msdn.microsoft.com/en-us/library/dd633440.aspx
所以Item和属性有不同的功能。根据描述Comparing Properties and Items:
MSBuild properties and items are both used to pass information to
tasks, evaluate conditions, and store values that can be referenced
throughout the project file.
我们可以将Property
转换为Item
或将Item
转换为Property
,在这种情况下,我们可以对Item
VS a进行更多操作Property
或使用 属性s function on
Item`。例如,将项目元数据设置为 MSBuild 脚本中的属性:
<ItemGroup>
<OutputDir Include="KeyFiles\;Certificates\" />
</ItemGroup>
<PropertyGroup>
<OutputDirList>@(OutputDir)</OutputDirList>
</PropertyGroup>
之后,我们可以在 Item
.
上使用 property
函数
参考这个link了解详情:Comparing Properties and Items
所以您的理解是正确的,“与 属性 相比,您可以对 Item 执行更多操作,这不仅仅是样式”
希望这对您有所帮助。
在我现有的MSBuild
XML中,我有这个
<Exec
EchoOff="true"
StandardOutputImportance="low"
StandardErrorImportance="low"
IgnoreExitCode="true"
ConsoleToMSBuild="true"
Command='
"$(CompilerExe)" ^
$(HWProcessor) ^
$(IncludeDirs) ^
$(CompilerOptions) ^
$(CompileDefines) ^
"$(CPPFILE)" ^
-MM
'>
<Output TaskParameter="ConsoleOutput" PropertyName="output_cppdeps"/>
<Output TaskParameter="ExitCode" PropertyName="exitcode_cppdeps"/>
</Exec>
<ItemGroup>
<Item_output_cppdeps Include="$(output_cppdeps)" />
</ItemGroup>
任务Exec
执行后,输出output_cppdeps
转化为Item
;有功能上的原因吗?
与 Property
相比,您可以在 Item
上执行更多操作吗?还是只是风格?
Are there more operations you can do on an Item vs a Property? Or is it simply style?
在回答这个问题之前,我们需要了解Property
和Item
的功能。
项目功能:https://msdn.microsoft.com/en-us/library/ee886422.aspx
属性 函数: https://msdn.microsoft.com/en-us/library/dd633440.aspx
所以Item和属性有不同的功能。根据描述Comparing Properties and Items:
MSBuild properties and items are both used to pass information to tasks, evaluate conditions, and store values that can be referenced throughout the project file.
我们可以将Property
转换为Item
或将Item
转换为Property
,在这种情况下,我们可以对Item
VS a进行更多操作Property
或使用 属性s function on
Item`。例如,将项目元数据设置为 MSBuild 脚本中的属性:
<ItemGroup>
<OutputDir Include="KeyFiles\;Certificates\" />
</ItemGroup>
<PropertyGroup>
<OutputDirList>@(OutputDir)</OutputDirList>
</PropertyGroup>
之后,我们可以在 Item
.
property
函数
参考这个link了解详情:Comparing Properties and Items
所以您的理解是正确的,“与 属性 相比,您可以对 Item 执行更多操作,这不仅仅是样式”
希望这对您有所帮助。