Ausgabelayout für Artefakte
In .NET 8 und höheren Versionen gibt es eine Möglichkeit, den Ausgabepfad und die Ordnerstruktur für Buildausgaben zu vereinfachen. Alle Buildausgaben aller Projekte werden an einem gemeinsamen Ort gesammelt, getrennt nach Projekt. Ein allgemeiner Speicherort erleichtert Tools das Antizipieren, wo die Ausgaben gefunden werden können.
Standardmäßig ist der allgemeine Speicherort ein Verzeichnis namens Artefakte neben der Datei Directory.build.props. Die Ordnerstruktur unter dem Stammordner artifacts lautet wie folgt:
📁 artifacts
└──📂 <Type of output>
└──📂 <Project name>
└──📂 <Pivot>
Die folgende Tabelle zeigt die Standardwerte für jede Ebene in der Ordnerstruktur. Sie können die Werte wie auch den Standardspeicherort mithilfe von Eigenschaften in der Datei Directory.build.props überschreiben.
Ordnerebene | Beschreibung | Beispiele |
---|---|---|
Ausgabetyp | Kategorien von Buildausgaben, z. B. Binärdateien, Zwischen-/generierte Dateien, veröffentlichte Anwendungen und NuGet-Pakete. | bin , obj , publish , package |
Projektname | Trennt die Ausgabe pro Projekt. | MyApp |
Pivotieren | Unterscheidet zwischen Builds eines Projekts für verschiedene Konfigurationen, Zielframeworks und Runtime-Bezeichner. Wenn mehrere Elemente benötigt werden, werden sie durch einen Unterstrich (_ ) verknüpft. Kann mithilfe der ArtifactsPivots -MSBuild-Eigenschaft angepasst werden. |
debug , debug_net8.0 , release , release_linux-x64 |
Beispiele
Die folgende Tabelle enthält Beispiele für Pfade, die erstellt werden könnten.
Pfad | Beschreibung |
---|---|
artifacts\bin\MyApp\debug | Der Buildausgabepfad für ein einfaches Projekt, wenn Sie dotnet build ausführen. |
artifacts\obj\MyApp\debug | Der Zwischenausgabepfad für ein einfaches Projekt, wenn Sie dotnet build ausführen. |
artifacts\bin\MyApp\debug_net8.0 | Der Buildausgabepfad für den net8.0 -Build eines Projekts mit mehreren Zielgruppen. |
artifacts\publish\MyApp\release_linux-x64 | Der Veröffentlichungspfad für eine einfache App beim Veröffentlichen für linux-x64 . |
artifacts\package\MyApp\release | Der Ordner, in dem der Release .nupkg für ein Projekt erstellt wird. |
Vorgehensweise zur Konfiguration
Wenn Sie sich für das Format des zentralisierten Ausgabepfads entscheiden möchten, fügen Sie Ihrer Directory.Build.props-Datei eine der folgenden MSBuild-Eigenschaften hinzu:
Um den Standardausgabespeicherort zu verwenden, legen Sie die
UseArtifactsOutput
-Eigenschaft auftrue
fest.<PropertyGroup> <UseArtifactsOutput>true</UseArtifactsOutput> </PropertyGroup>
Um einen benutzerdefinierten Ausgabespeicherort festzulegen, fügen Sie eine
ArtifactsPath
-Eigenschaft mit dem Wert$(MSBuildThisFileDirectory)artifacts
hinzu (oder was auch immer der Ordnerspeicherort sein soll). Wenn Sie noch nicht über eine Datei Directory.Build.props verfügen, können Sie den folgenden Befehl ausführen, um automatisch eine Datei zu generieren, welche dieArtifactsPath
-Eigenschaft enthält:dotnet new buildprops --use-artifacts
Die generierte Datei sieht ähnlich aus wie diese:
<Project> <PropertyGroup> <ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath> </PropertyGroup> </Project>
Der Ordnername „pivot“ ist standardmäßig eine Kombination aus Zielframeworkmoniker (Target Framework Moniker, TFM), Konfiguration und Laufzeitbezeichner (Runtime Identifier, RID). Alle, die nicht vorhanden sind, werden weggelassen. Um anzupassen, wie der Ordner „pivot“ benannt wird, legen Sie die ArtifactsPivots
-MSBuild-Eigenschaft auf die gewünschte Zeichenfolge fest. Beispiel:
<PropertyGroup>
...
<ArtifactsPivots>$(ArtifactsPivots)_MyCustomPivot</ArtifactsPivots>
</PropertyGroup>