Training
Lernpfad
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
MSBuild ist die Buildplattform für Microsoft und Visual Studio. In diesem Lernprogramm werden die Bausteine von MSBuild vorgestellt und gezeigt, wie Sie MSBuild-Projekte schreiben, bearbeiten und debuggen. Sie erfahren mehr über:
Erstellen und Bearbeiten einer Projektdatei
Verwenden von Buildeigenschaften.
Verwenden von Buildelementen
Sie können MSBuild aus Visual Studio oder aus dem Befehlsfensterausführen. In diesem Lernprogramm erstellen Sie eine MSBuild-Projektdatei mit Visual Studio. Sie bearbeiten die Projektdatei in Visual Studio, und verwenden Sie das Befehlsfenster, um das Projekt zu erstellen und die Ergebnisse zu untersuchen.
Wenn Sie Visual Studio installiert haben, ist MSBuild bereits installiert. Mit Visual Studio 2019 und höher wird sie unter dem Installationsordner von Visual Studio installiert. Bei einer typischen Standardinstallation unter Windows 10 befindet sich MSBuild.exe unter dem Installationsordner in MSBuild\Current\Bin.
Stellen Sie im Installationsprogramm sicher, dass MSBuild-Tools für die von Ihnen verwendeten Workloads ausgewählt sind, und wählen Sie Installierenaus.
Um MSBuild auf einem System zu installieren, das nicht über Visual Studio verfügt, wechseln Sie zu Buildtools für Visual Studio 2019, oder installieren Sie das .NET SDK-.
Wenn Sie Visual Studio installiert haben, ist MSBuild bereits installiert. Mit Visual Studio 2022 wird sie unter dem Visual Studio-Installationsordner installiert. Bei einer typischen Standardinstallation unter Windows 10 befindet sich MSBuild.exe unter dem Installationsordner in MSBuild\Current\Bin.
Navigieren Sie im Visual Studio-Installationsprogramm zu Einzelne Komponenten, und finden Sie das Kontrollkästchen für MSBuild. Es wird automatisch ausgewählt, wenn Sie eine der anderen zu installierenden Workloads auswählen.
Um MSBuild auf einem System zu installieren, das nicht über Visual Studio verfügt, wechseln Sie zu Buildtools für Visual Studio 2022 auf der Downloadseite. Eine weitere Möglichkeit zum Abrufen von MSBuild besteht darin, das .NET SDK-zu installieren.
Das Visual Studio-Projektsystem basiert auf MSBuild. Es ist einfach, eine neue Projektdatei mit Visual Studio zu erstellen. In diesem Abschnitt erstellen Sie eine C#-Projektdatei. Sie können stattdessen eine Visual Basic-Projektdatei erstellen. Im Kontext dieses Lernprogramms ist der Unterschied zwischen den beiden Projektdateien geringfügig.
So erstellen Sie eine Projektdatei
Öffnen Sie Visual Studio, und erstellen Sie ein Projekt:
Geben Sie im Suchfeld winforms
ein, und wählen Sie dann Erstellen einer neuen Windows Forms-App (.NET Framework)aus. Wählen Sie im angezeigten Dialogfeld Erstellen aus.
Geben Sie im Feld Projektname die Zeichenfolge BuildApp
ein. Geben Sie einen Speicherort für die Lösung ein, z.B. D:\.
Klicken Sie auf OK oder Erstellen, um die Projektdatei zu erstellen.
Im vorherigen Abschnitt haben Sie Visual Studio zum Erstellen einer C#-Projektdatei verwendet. Die Projektdatei wird im Projektmappen-Explorer durch den Projektknoten „BuildApp“ dargestellt. Sie können den Visual Studio-Code-Editor verwenden, um die Projektdatei zu untersuchen.
So untersuchen Sie die Projektdatei
Klicken Sie im Projektmappen-Explorer auf den Projektknoten BuildApp.
Im Eigenschaftenbrowser wird als Projektdatei-Eigenschaft BuildApp.csproj angezeigt. Alle Projektdateien werden mit dem Suffix projbenannt. Wenn Sie ein Visual Basic-Projekt erstellt haben, wäre der Projektdateiname BuildApp.vbproj.
Klicken Sie erneut mit der rechten Maustaste auf den Projektknoten, und klicken Sie dann BuildApp.csprojbearbeiten.
Die Projektdatei wird im Code-Editor angezeigt.
Hinweis
Bei einigen Projekttypen, z. B. C++, müssen Sie das Projekt entladen (klicken Sie mit der rechten Maustaste auf die Projektdatei, und wählen Sie Projekt entladen) aus, bevor Sie die Projektdatei öffnen und bearbeiten können.
Projektdateien sind XML-formatierte Dateien mit dem Stammknoten Project.
Die meisten .NET-Projekte verfügen über ein Sdk
-Attribut. Diese Projekte werden als SDK-Formatprojekte bezeichnet. Das Verweisen auf ein SDK bedeutet, dass MSBuild eine Reihe von Dateien importiert, die die Buildinfrastruktur für dieses SDK bereitstellen. Wenn Sie nicht auf ein SDK verweisen, können Sie MSBuild weiterhin verwenden, sie haben nur nicht automatisch alle SDK-spezifischen Eigenschaften und Ziele für Sie zur Verfügung.
<Project Sdk="Microsoft.NET.Sdk">
Es gibt viele Variationen von .NET-SDKs für besondere Zwecke; sie werden unter .NET Project SDKsbeschrieben.
Die Arbeit beim Erstellen einer Anwendung wird mit den Elementen Target und Task erledigt.
Eine Aufgabe ist die kleinste Arbeitseinheit, also das "Atom" eines Builds. Aufgaben sind unabhängige ausführbare Komponenten, die Eingaben und Ausgaben enthalten können. Es gibt derzeit keine Vorgänge, auf die in der Projektdatei verwiesen oder definiert ist. Sie fügen der Projektdatei aufgaben in den folgenden Abschnitten hinzu. Weitere Informationen finden Sie unter Aufgaben.
Ein Ziel ist eine benannte Abfolge von Vorgängen. Es kann eine benannte Abfolge von Vorgängen sein, aber kritisch, es stellt etwas dar, das erstellt oder erledigt werden soll, sodass es auf zielorientierte Weise definiert werden sollte. Weitere Informationen finden Sie unter Ziele.
Das Standardziel ist in der Projektdatei nicht definiert. Stattdessen wird er in importierten Projekten angegeben. Das Import--Element gibt importierte Projekte an. In einem C#-Projekt wird beispielsweise das Standardziel aus der Datei importiert, Microsoft.CSharp.targets.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Importierte Dateien werden effektiv in die Projektdatei eingefügt, wo auf sie verwiesen wird.
In PROJEKTEN im SDK-Stil wird dieses Importelement nicht angezeigt, da das SDK-Attribut bewirkt, dass diese Datei implizit importiert wird.
MSBuild verfolgt die Ziele eines Builds und garantiert, dass jedes Ziel nicht mehr als einmal erstellt wird.
Fügen Sie der Projektdatei ein Ziel hinzu. Fügen Sie dem Ziel eine Aufgabe hinzu, die eine Nachricht druckt.
Fügen Sie ein Ziel und eine Aufgabe hinzu
Fügen Sie diese Zeilen zur Projektdatei direkt nach der Import-Anweisung oder dem öffnenden Project-Element hinzu.
<Target Name="HelloWorld">
</Target>
Dieser Code erstellt ein Ziel namens HelloWorld. Beachten Sie, dass Sie beim Bearbeiten der Projektdatei über IntelliSense-Unterstützung verfügen.
Fügen Sie dem HelloWorld-Ziel Zeilen hinzu, damit der resultierende Abschnitt wie folgt aussieht:
<Target Name="HelloWorld">
<Message Text="Hello"></Message>
<Message Text="World"></Message>
</Target>
Speichern Sie die Projektdatei.
Die Message
Aufgabe ist eine der vielen Aufgaben, die mit MSBuild ausgeliefert werden. Eine vollständige Liste der verfügbaren Aufgaben und Nutzungsinformationen finden Sie unter Aufgabenreferenz.
Die Message
Aufgabe verwendet den Zeichenfolgenwert des attributs Text
als Eingabe und zeigt ihn auf dem Ausgabegerät an (oder schreibt ihn ggf. in ein oder mehrere Protokolle). Das HelloWorld
-Ziel führt die Message-Aufgabe zweimal aus: zuerst wird „Hello“ angezeigt, dann „World“.
Wenn Sie versuchen, dieses Projekt aus Visual Studio zu erstellen, erstellt es nicht das von Ihnen definierte Ziel. Der Grund dafür ist, dass Visual Studio das Standardziel auswäht, das immer noch die in der importierten .targets
Datei ist.
Führen Sie MSBuild über die Entwickler-Eingabeaufforderung für Visual Studio aus, um das zuvor definierte HelloWorld-Ziel zu erstellen. Verwenden Sie den Befehlszeilenschalter -target
oder -t
, um das Ziel auszuwählen.
Hinweis
In den folgenden Abschnitten wird die Developer-Eingabeaufforderung als Befehlsfenster bezeichnet.
So erstellen Sie das Ziel:
Öffnen Sie das Befehlsfenster.
Beginnen Sie im Suchfeld auf der Taskleiste mit der Eingabe des Namens des Tools, z. B. dev
oder developer command prompt
. Eine Liste der installierten Apps, die Ihrem Suchmuster entsprechen, wird angezeigt.
Wenn Sie die Datei manuell finden müssen, ist die Datei LaunchDevCmd.bat im Ordner {Visual Studio-Installationsordner}\Common7\Tools.
Navigieren Sie im Befehlsfenster zu dem Ordner, der die Projektdatei enthält, in diesem Fall D:\BuildApp\BuildApp\BuildApp.
Führen Sie msbuild mit dem Befehlsschalter -t:HelloWorld
aus. Mit diesem Befehl wird das HelloWorld-Ziel ausgewählt und erstellt:
msbuild buildapp.csproj -t:HelloWorld
Untersuchen Sie die Ausgabe im Befehlsfenster. Die beiden Zeilen "Hello" und "World" sollten angezeigt werden:
Hello
World
Hinweis
Wenn stattdessen The target "HelloWorld" does not exist in the project
angezeigt wird, haben Sie wahrscheinlich vergessen, die Projektdatei im Code-Editor zu speichern. Speichern Sie die Datei, und versuchen Sie es erneut.
Indem Sie zwischen dem Code-Editor und dem Befehlsfenster wechseln, können Sie die Projektdatei ändern und die Ergebnisse schnell anzeigen.
Buildeigenschaften sind Name-Wert-Paare, anhand derer der Build ausgeführt wird. Mehrere Buildeigenschaften sind bereits oben in der Projektdatei definiert:
<PropertyGroup>
...
<ProductVersion>10.0.11107</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{30E3C9D5-FD86-4691-A331-80EA5BA7E571}</ProjectGuid>
<OutputType>WinExe</OutputType>
...
</PropertyGroup>
Alle Eigenschaften sind untergeordnete Elemente von PropertyGroup-Elementen. Der Name der Eigenschaft ist der Name des untergeordneten Elements, und der Wert der Eigenschaft ist das Textelement des untergeordneten Elements. Zum Beispiel
<TargetFrameworkVersion>net8.0</TargetFrameworkVersion>
definiert die Eigenschaft mit dem Namen TargetFrameworkVersion
und gibt den Zeichenfolgenwert "net8.0" an.
Build-Eigenschaften können jederzeit neu definiert werden. If
<TargetFrameworkVersion>net6.0</TargetFrameworkVersion>
erscheint später in der Projektdatei oder in einer Datei, die später in der Projektdatei importiert wird, dann erhält TargetFrameworkVersion
den neuen Wert "net6.0".
Verwenden Sie zum Abrufen des Werts einer Eigenschaft die folgende Syntax, wobei PropertyName
der Name der Eigenschaft ist:
$(PropertyName)
Verwenden Sie diese Syntax, um einige der Eigenschaften in der Projektdatei zu untersuchen.
So untersuchen Sie einen Eigenschaftswert
Ersetzen Sie im Code-Editor das HelloWorld-Ziel durch diesen Code:
<Target Name="HelloWorld">
<Message Text="Configuration is $(Configuration)" />
<Message Text="MSBuildToolsPath is $(MSBuildToolsPath)" />
</Target>
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Diese beiden Zeilen sollten angezeigt werden (Ihre Ausgabe kann unterschiedlich sein):
Configuration is Debug
MSBuildToolsPath is C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
Configuration is Debug
MSBuildToolsPath is C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\16.0\Bin
Viele Eigenschaften wie Configuration
werden bedingt definiert, d. h. das attribut Condition
wird im Eigenschaftselement angezeigt. Bedingte Eigenschaften werden nur definiert oder neu definiert, wenn die Bedingung als "true" ausgewertet wird. Nicht definierte Eigenschaften erhalten den Standardwert einer leeren Zeichenfolge. Zum Beispiel
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
bedeutet : "Wenn die Konfigurationseigenschaft noch nicht definiert wurde, definieren Sie sie, und geben Sie ihm den Wert "Debug".
Fast alle MSBuild-Elemente können ein Condition
Attribut aufweisen. Weitere Informationen zur Verwendung des Condition
-Attributs finden Sie unter Bedingungen.
MSBuild reserviert einige Eigenschaftennamen, um Informationen über die Projektdatei und die MSBuild-Binärdateien zu speichern. MSBuildToolsPath ist ein Beispiel für eine reservierte Eigenschaft. Reservierte Eigenschaften werden mit der $
Notation wie jede andere Eigenschaft referenziert. Weitere Informationen finden Sie unter Vorgehensweise: Verweisen auf den Namen oder Speicherort der Projektdatei und Reservierte und bekannte Eigenschaften für MSBuild.
Sie können auf Umgebungsvariablen in Projektdateien auf die gleiche Weise wie Buildeigenschaften verweisen. Wenn Sie beispielsweise die PATH
Umgebungsvariable in Ihrer Projektdatei verwenden möchten, verwenden Sie $(Path
). Wenn das Projekt eine Eigenschaftsdefinition enthält, die denselben Namen wie eine Umgebungsvariable hat, überschreibt die Eigenschaft im Projekt den Wert der Umgebungsvariable. Weitere Informationen finden Sie unter Vorgehensweise: Verwenden von Umgebungsvariablen in einem Build.
Eigenschaften können in der Befehlszeile mithilfe des -property
oder -p
Befehlszeilenschalters definiert werden. Von der Befehlszeile empfangene Eigenschaftswerte setzen Eigenschaftswerte außer Kraft, die in den Projektdatei- und Umgebungsvariablen festgelegt sind.
So legen Sie einen Eigenschaftswert über die Befehlszeile fest:
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
Prüfen Sie die Ausgabe. Diese Zeile sollte angezeigt werden:
Configuration is Release.
MSBuild erstellt die Configuration-Eigenschaft und gibt den Wert "Release" an.
Bestimmte Zeichen haben in MSBuild-Projektdateien eine besondere Bedeutung. Beispiele für diese Zeichen sind Semikolons (;
) und Sternchen (*
). Um diese Sonderzeichen als Literale in einer Projektdatei zu verwenden, müssen sie mithilfe der Syntax %<xx>
angegeben werden, wobei <xx>
den ASCII-Hexadezimalwert des Zeichens darstellt.
Ändern Sie die Aufgabe "Nachricht", um den Wert der Konfigurationseigenschaft mit Sonderzeichen anzuzeigen, damit sie besser lesbar ist.
So verwenden Sie Sonderzeichen in der Aufgabe "Nachricht":
Ersetzen Sie im Code-Editor beide Nachrichtenaufgaben durch diese Zeile:
<Message Text="%24(Configuration) is %22$(Configuration)%22" />
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Diese Zeile sollte angezeigt werden:
$(Configuration) is "Debug"
Weitere Informationen finden Sie unter MSBuild-Sonderzeichen.
Ein Element ist ein Informationselement, in der Regel ein Dateiname, der als Eingabe für das Buildsystem verwendet wird. Beispielsweise kann eine Auflistung von Elementen, die Quelldateien darstellen, an eine Aufgabe mit dem Namen "Kompilieren" übergeben werden, um sie in eine Assembly zu kompilieren.
Alle Elemente sind untergeordnete Elemente von ItemGroup-Elementen. Der Elementname ist der Name des untergeordneten Elements, und der Elementwert ist der Wert des Include-Attributs des untergeordneten Elements. Die Werte von Elementen mit demselben Namen werden in Elementtypen dieses Namens gesammelt. Zum Beispiel
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
definiert eine Elementgruppe mit zwei Elementen. Der Elementtyp "Kompilieren" hat zwei Werte: Program.cs und Properties\AssemblyInfo.cs.
Der folgende Code erstellt denselben Elementtyp, indem beide Dateien in einem Include
Attribut deklariert werden, getrennt durch ein Semikolon.
<ItemGroup>
<Compile Include="Program.cs;Properties\AssemblyInfo.cs" />
</ItemGroup>
Weitere Informationen finden Sie unter Elemente.
Hinweis
Dateipfade sind relativ zum Ordner, der die MSBuild-Projektdatei enthält, auch wenn es sich bei der Projektdatei um eine importierte Projektdatei handelt. Es gibt einige Ausnahmen davon, z. B. bei Verwendung von Import und UsingTask Elementen.
Um die Werte eines Elementtyps abzurufen, verwenden Sie die folgende Syntax, wobei ItemType
der Name des Elementtyps ist:
@(ItemType)
Verwenden Sie diese Syntax, um den Compile
Elementtyp in der Projektdatei zu untersuchen.
So untersuchen Sie Elementtypwerte:
Ersetzen Sie im Code-Editor die Zielaufgabe "HelloWorld" durch diesen Code:
<Target Name="HelloWorld">
<Message Text="Compile item type contains @(Compile)" />
</Target>
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Du solltest diese lange Zeile sehen:
Compile item type contains Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs
Die Werte eines Elementtyps werden standardmäßig durch Semikolons getrennt.
Um das Trennzeichen eines Elementtyps zu ändern, verwenden Sie die folgende Syntax, wobei ItemType der Elementtyp und Trennzeichen eine Zeichenfolge mit mindestens einem getrennten Zeichen ist:
@(ItemType, Separator)
Ändern Sie die Message
-Aufgabe, um Compile-Elemente mithilfe von Wagenrückläufen und Zeilenvorschüben (%0A%0D) auf jeweils eigenen Zeilen anzuzeigen.
So zeigen Sie Elementtypwerte auf jeweils eigenen Zeilen an
Ersetzen Sie im Code-Editor die Aufgabe "Nachricht" durch diese Zeile:
<Message Text="Compile item type contains @(Compile, '%0A%0D')" />
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Diese Zeilen sollten angezeigt werden:
Compile item type contains Form1.cs
Form1.Designer.cs
Program.cs
Properties\AssemblyInfo.cs
Properties\Resources.Designer.cs
Properties\Settings.Designer.cs
Sie können die Wildcards "*", "**" und "?" mit dem attribut Include
verwenden, um Einem Elementtyp Elemente hinzuzufügen. Zum Beispiel
<Photos Include="images\*.jpeg" />
Fügt alle Dateien mit der Dateierweiterung .jpeg im Ordner Bilder dem Elementtyp "Fotos" hinzu, während
<Photos Include="images\**\*.jpeg" />
alle Dateien mit der Dateierweiterung JPEG im Ordner images und allen Unterordnern dem Photos-Elementtyp hinzufügt. Weitere Beispiele finden Sie unter Vorgehensweise: Auswählen von Dateien für den Buildvorgang.
Beachten Sie, dass Elemente, wenn sie deklariert werden, dem Elementtyp hinzugefügt werden. Zum Beispiel
<Photos Include="images\*.jpeg" />
<Photos Include="images\*.gif" />
erstellt einen Elementtyp namens "Photo", der alle Dateien im Bilder Ordner mit einer Dateierweiterung von .jpeg
oder .gif
enthält. Diese Zeilen entsprechen der folgenden Zeile:
<Photos Include="images\*.jpeg;images\*.gif" />
Sie können ein Element aus einem Elementtyp mit dem attribut Exclude
ausschließen. Zum Beispiel
<Compile Include="*.cs" Exclude="*Designer*">
fügt alle Dateien mit der Dateierweiterung .cs zum Compile
Elementtyp hinzu, mit Ausnahme von Dateien, deren Namen die Zeichenfolge Designerenthalten. Weitere Beispiele finden Sie unter Vorgehensweise: Ausschließen von Dateien vom Buildvorgang.
Das Attribut Exclude
wirkt sich nur auf die Elemente aus, die durch das Attribut Include
im Element hinzugefügt wurden, das beide enthält. Zum Beispiel
<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">
würde die Datei Form1.csnicht ausschließen, die im vorherigen Elementelement hinzugefügt wurde.
Zum Einschließen und Ausschließen von Elementen
Ersetzen Sie im Code-Editor die Aufgabe "Nachricht" durch diese Zeile:
<Message Text="XFiles item type contains @(XFiles)" />
Fügen Sie diese Elementgruppe direkt hinter dem Importelement hinzu:
<ItemGroup>
<XFiles Include="*.cs;properties/*.resx" Exclude="*Designer*" />
</ItemGroup>
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Diese Zeile sollte angezeigt werden:
XFiles item type contains Form1.cs;Program.cs;Properties/Resources.resx
Elemente können zusätzlich zu den informationen, die aus dem Include
und Exclude
Attributen gesammelt wurden, Metadaten enthalten. Aufgaben, die mehr Informationen zu Elementen erfordern, als nur der Elementwert, können diese Metadaten verwenden.
Elementmetadaten werden in der Projektdatei deklariert, indem ein Element mit dem Namen der Metadaten als untergeordnetes Element des Elements erstellt wird. Ein Element kann null oder mehr Metadatenwerte enthalten. Das folgende CSFile-Element enthält z. B. Kulturmetadaten mit dem Wert "Fr":
<ItemGroup>
<CSFile Include="main.cs">
<Culture>Fr</Culture>
</CSFile>
</ItemGroup>
Um den Metadatenwert eines Elementtyps abzurufen, verwenden Sie die folgende Syntax, wobei ItemType
der Name des Elementtyps und MetaDataName der Name der Metadaten ist:
%(ItemType.MetaDataName)
So untersuchen Sie Elementmetadaten:
Ersetzen Sie im Code-Editor die Aufgabe "Nachricht" durch diese Zeile:
<Message Text="Compile.DependentUpon: %(Compile.DependentUpon)" />
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Diese Zeilen sollten angezeigt werden:
Compile.DependentUpon:
Compile.DependentUpon: Form1.cs
Compile.DependentUpon: Resources.resx
Compile.DependentUpon: Settings.settings
Beachten Sie, dass der Ausdruck "Compile.DependentUpon" mehrmals angezeigt wird. Die Verwendung von Metadaten mit dieser Syntax innerhalb eines Ziels bewirkt "Batchverarbeitung". Batchverarbeitung bedeutet, dass die Aufgaben innerhalb des Ziels einmal für jeden eindeutigen Metadatenwert ausgeführt werden. Batchverarbeitung ist die MSBuild-Skriptentsprechung des häufig verwendeten Programmierkonstrukts „ForEach-Schleife“. Weitere Informationen finden Sie unter MSBuild Batching (Batchverarbeitung).
Wenn ein Element einer Elementliste hinzugefügt wird, wird diesem Element einige bekannte Metadaten zugewiesen. Beispielsweise gibt %(Filename)
den Dateinamen eines elements zurück. Eine vollständige Liste bekannter Metadaten finden Sie unter Metadaten bekannter Elemente.
So untersuchen Sie bekannte Metadaten:
Ersetzen Sie im Code-Editor die Aufgabe "Nachricht" durch diese Zeile:
<Message Text="Compile Filename: %(Compile.Filename)" />
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Diese Zeilen sollten angezeigt werden:
Compile Filename: Form1
Compile Filename: Form1.Designer
Compile Filename: Program
Compile Filename: AssemblyInfo
Compile Filename: Resources.Designer
Compile Filename: Settings.Designer
Wenn Sie die beiden vorherigen Beispiele vergleichen, können Sie sehen, dass zwar nicht jedes Element im Compile
Elementtyp die Metadaten "DependentUpon" aufweist, aber alle Elemente über die bekannten Metadaten des Dateinamens verfügen.
Elementlisten können in neue Elementlisten umgewandelt werden. Um eine Elementliste zu transformieren, verwenden Sie die folgende Syntax, wobei <ItemType>
der Name des Elementtyps ist und <MetadataName>
der Name der Metadaten ist:
@(ItemType -> '%(MetadataName)')
Eine Elementliste mit Quelldateien kann z. B. mithilfe eines Ausdrucks wie @(SourceFiles -> '%(Filename).obj')
in eine Auflistung von Objektdateien umgewandelt werden. Weitere Informationen finden Sie unter Transforms.
So transformieren Sie Elemente mithilfe von Metadaten:
Ersetzen Sie im Code-Editor die Aufgabe "Nachricht" durch diese Zeile:
<Message Text="Backup files: @(Compile->'%(filename).bak')" />
Speichern Sie die Projektdatei.
Geben Sie im Befehlsfensterdiese Zeile ein, und führen Sie sie aus:
msbuild buildapp.csproj -t:HelloWorld
Prüfen Sie die Ausgabe. Diese Zeile sollte angezeigt werden:
Backup files: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo.bak;Resources.Designer.bak;Settings.Designer.bak
Beachten Sie, dass in dieser Syntax ausgedrückte Metadaten keine Batchverarbeitung verursachen.
Wenn Sie erfahren möchten, wie Sie eine einfache Projektdatei einzeln erstellen, probieren Sie unter Windows Erstellen einer MSBuild-Projektdatei ganz neuaus.
Wenn Sie in erster Linie das .NET SDK verwenden, lesen Sie weiter unter MSBuild Reference für .NET SDK Projects.
Training
Lernpfad
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Dokumentation
Verwenden des MSBuild-XML-Schemas zum Steuern von Builds - MSBuild
Erfahren Sie, wie die Microsoft Build Engine (MSBuild)-Plattform eine Projektdatei mit einem XML-Schema zum Steuern von Builds mit Eigenschaften, Elementen, Aufgaben und Zielen bereitstellt.
Neuerungen in MSBuild 17 - MSBuild
Überprüfen Sie die geänderten, aktualisierten und neuen Features von MSBuild 17, einschließlich der Unterstützung für .NET Framework 4.7.2 und .NET 6.0, und greifen Sie auf Links zu Versionshinweisen zu.
Erstellen einer MSBuild-Projektdatei von Grund auf neu - MSBuild
Erstellen Sie eine MSBuild-Projektdatei von Grund auf neu, um zu verstehen, wie die XML organisiert ist und wie Sie sie ändern können, um einen Build zu steuern.