Verschiedene Möglichkeiten, Variablen in MSBuild zu übergeben

78

Ich bin ziemlich neu in MS Build und habe viele der integrierten Zieldateien überprüft, die im Lieferumfang von Visual Studio enthalten sind. Ich habe gesehen, dass Variablen auf verschiedene Arten übergeben wurden, und bin mir der Unterschiede zwischen diesen nicht ganz sicher:

$(...)
@(...)
%(...)
Wallace Breza
quelle

Antworten:

96
  • $(...)wird verwendet, um auf den PropertyWert zuzugreifen (Weitere Informationen zum Eigenschaftselement )

    <PropertyGroup>
      <Configuration>Debug</Configuration>
    </PropertyGroup>
    
    <Message Text="Configuration = $(Configuration)"/>
    
  • @(...)wird verwendet, um auf den ItemWert zuzugreifen (Weitere Informationen zum Element Element )

    <ItemGroup>
      <Reference Include="System.Data"/>
      <Reference Include="System.Web.*"/>
    </ItemGroup>
    
    <Message Text="References = @(Reference)"/>
    
  • %(...)wird verwendet, um auf den Item MetadataWert zuzugreifen (Weitere Informationen zu Artikelmetadaten ). Es wird auch zum Batching verwendet .

    <ItemGroup>
      <Compile Include="Account\ChangePassword.aspx.cs">
        <DependentUpon>ChangePassword.aspx</DependentUpon>
        <SubType>ASPXCodeBehind</SubType>
      <Compile/>
    </ItemGroup>
    
    <Message Text="Element @(Compile) of subtype %(SubType) and depend of %(DependentUpon)"/>
    
Julien Hoarau
quelle
19

Dollar - $ (MyProp): Ermöglicht das Referenzieren von Werten, die in PropertyGroups angegeben sind.

At Sign - @ (CodeFile): Ermöglicht das Referenzieren von Listen mit Elementen, die in ItemGroups angegeben sind.

Prozent -% (CodeFile.BatchNum): Ermöglicht das Verweisen auf gestapelte ItemGroup-Werte mithilfe von Metadaten. Dies ist etwas komplizierter. Lesen Sie daher unbedingt die Dokumentation, um weitere Informationen zu erhalten.

Schauen Sie sich jeden Link an, um detailliertere Informationen darüber zu erhalten, wie diese verwendet werden. Viel Glück - hoffe das hilft!

Indolenter Codierer
quelle