【问题标题】:msbuild - difference between using PROPERTY or ITEM to store valuesmsbuild - 使用 PROPERTY 或 ITEM 存储值之间的区别
【发布时间】:2018-03-10 17:26:19
【问题描述】:

在我现有的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;有功能原因吗?

您可以在ItemProperty 上执行更多操作吗?还是单纯的风格?

【问题讨论】:

    标签: visual-studio visual-studio-2013 msbuild


    【解决方案1】:

    您可以对项目和属性执行更多操作吗?还是单纯的风格?

    在回答这个问题之前,我们需要了解PropertyItem的作用。

    项目功能https://msdn.microsoft.com/en-us/library/ee886422.aspx

    属性函数https://msdn.microsoft.com/en-us/library/dd633440.aspx

    所以 Item 和 Property 有不同的功能。根据Comparing Properties and Items的描述:

    MSBuild 属性和项都用于将信息传递给 任务、评估条件和存储可以引用的值 贯穿整个项目文件。

    我们可以将Property 转换为ItemItem 转换为Property,在这种情况下,我们可以对ItemProperty 进行更多操作或使用Propertys function onItem`。例如,在 MSBuild 脚本中将 Item Metadata 设置为属性:

    <ItemGroup>  
      <OutputDir Include="KeyFiles\;Certificates\" />  
    </ItemGroup>  
    <PropertyGroup>  
      <OutputDirList>@(OutputDir)</OutputDirList>  
    </PropertyGroup> 
    

    之后,我们可以在Item 上使用property 函数。

    详情请参考此链接:Comparing Properties and Items

    所以您的理解是正确的,“您可以对 Item 与 Property 进行更多操作,而不仅仅是样式

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 2014-06-04
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      相关资源
      最近更新 更多