2016-02-16 15 views
7

posso compilare un file .cs fa riferimento PropertyGroup:In MsBuild, qual è la differenza tra PropertyGroup e ItemGroup

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

o fare la stessa cosa usando ItemGroup:

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

So che l'utilizzo di ItemGroup dovrebbe essere il metodo preferito, ma qual è il momento in cui dovrei usare ognuna di queste proprietà?

risposta

7

Pensare al gruppo di proprietà come una raccolta di singole variabili, le proprietà possono contenere solo un valore.

Mentre itemgroup è simile a un array o una raccolta che può contenere zero, uno o più valori. È inoltre possibile eseguire iterazioni di gruppi di articoli che sono spesso utili quando si desidera eseguire la stessa attività su più elementi. Un esempio comune di questo è la compilazione di molti file.

+2

I valori del gruppo di elementi possono anche avere più attributi, tra cui uno "schema" definito. Le proprietà sono strettamente valori a stringa singola. –

Problemi correlati