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:

$(...)
@(...)
%(...)

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)"/>
    

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!


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.