2017-09-28 2 views
1

Dans mon XML MSBuild existant, j'ai cemsbuild - différence entre l'utilisation des biens ou ITEM pour stocker des valeurs

<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> 

Après la tâche Exec est exécutée, la sortie output_cppdeps se transforme en un Item; Y at-il une raison fonctionnelle pourquoi?

Y a-t-il plus d'opérations que vous pouvez faire sur un Item par rapport à un Property? Ou est-ce simplement le style?

Répondre

1

Y a-t-il plus d'opérations que vous pouvez faire sur un élément par rapport à une propriété? Ou est-ce simplement le style?

Avant de répondre à cette question, nous avons besoin de connaître les fonctions de Property et Item.

Article Fonctions: https://msdn.microsoft.com/en-us/library/ee886422.aspx

Fonctions de propriété: https://msdn.microsoft.com/en-us/library/dd633440.aspx

donc article et de la propriété ont des fonctions différentes. Selon la description Comparing Properties and Items:

propriétés MSBuild et articles sont tous deux utilisés pour transmettre des informations à tâches, évaluer les conditions et les valeurs des magasins qui peuvent être référencées tout au long du dossier du projet.

Nous pourrions convertir Property-Item ou Item-Property, dans ce cas, nous pourrions faire plus d'opérations sur un Item VS un Property ou utiliser la propriété s function on Item`. Par exemple, en tant que propriétés des métadonnées dans régler le poste de script MSBuild:

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

Après cela, nous pourrions utiliser la fonction property sur le Item.

Se référer à ce lien pour plus de détails: Comparing Properties and Items

Ainsi, votre compréhension est correcte, « il y a plus d'opérations que vous pouvez faire sur un élément vs une propriété, il est tout simplement le style »

Espoir CA aide.