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 auf true 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 die ArtifactsPath-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>