Freigeben über


Ändern des Buildausgabeverzeichnisses

Sie können den Speicherort der von Ihrem Projekt generierten Ausgabe auf Basis der Konfiguration („Debug“, „Release“ oder beides) angeben. Bei Standardeinstellungen variieren Ausgabeordner bei einigen Projekten mit plattformspezifischen oder frameworkspezifischen Unterordnern je nach Projekttyp und SDK.

Visual Studio stellt Eigenschaften bereit, mit denen Sie zwischenzeitliche und endgültige Ausgaben in benutzerdefinierten Ordnern platzieren können, indem Sie entweder die Pfade relativ zum Projektordner oder einen absoluten Pfad an einer beliebigen Stelle im Dateisystem angeben. Zusätzlich zu den Einstellungen, die Sie in den Visual Studio-Projekteigenschaften angeben, können Sie die Ausgabe auch weiter anpassen, indem Sie die Projektdatei bearbeiten und die Funktionen von MSBuild und .NET SDK verwenden, um die vollständige Kontrolle über alle Aspekte der Projektausgabe zu erhalten, entweder für einzelne Projekte oder auf Projektmappenebene für viele Projekte.

Ändern des Buildausgabeverzeichnisses

  1. Bereinigen Sie das Projekt oder die Projektmappe, um alle vorhandenen Ausgabedateien zu entfernen (Build>Clean solution).

  2. Navigieren Sie zur Seite mit den Projekteigenschaften. Klicken Sie hierzu im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaften aus.

  3. Wählen Sie basierend auf Ihren Projekttyp die entsprechende Registerkarte:

    • Wählen Sie für C# die Registerkarte Erstellen aus.
    • Wählen Sie für Visual Basic die Registerkarte Kompilieren aus.
    • Wählen Sie für C++ oder JavaScript die Registerkarte Allgemein.
  4. Wählen Sie in der Konfigurationen-Dropdownliste am oberen Rand die Konfiguration aus, deren Speicherort der Ausgabedatei Sie ändern möchten (Debug, Release oder Alle Konfigurationen).

  5. Suchen Sie auf der Seite den Eintrag für den Ausgabepfad. Er unterscheidet sich je nach Projekttyp:

    • Ausgabepfad für C#- und JavaScript-Projekte
    • Buildausgabepfad für Visual Basic-Projekte
    • Ausgabeverzeichnis für Visual C++-Projekte

    Geben Sie den Pfad zum Generieren der Ausgabe (absolut oder relativ zum Stammverzeichnis des Projekts) ein, oder wählen Sie Durchsuchen, um zu diesem Ordner zu navigieren.

    Ausgabepfadeigenschaft für ein Visual Studio C#-Projekt

    Hinweis

    Einige Projekte (.NET und ASP .NET Core) enthalten standardmäßig die Framework-Version oder Laufzeitbezeichner im Build-Pfad. Wenn Sie dies ändern möchten, klicken Sie im Projektmappen-Explorer auf den Projektknoten, wählen Sie Projektdatei bearbeiten aus, und fügen Sie Folgendes hinzu:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

Tipp

Wenn die Ausgabe nicht an dem festgelegten Speicherort generiert wird, müssen Sie in der Menüleiste von Visual Studio die entsprechende Konfiguration (z. B. Debuggen oder Version) erstellen.

Auswahl der Buildkonfiguration in Visual Studio 2019.

Erstellen in einem gemeinsamen Ausgabeverzeichnis

Standardmäßig erstellt Visual Studio jedes Projekt in einer Projektmappe in einem eigenen Ordner in der Projektmappe. Sie können die Buildausgabepfade Ihrer Projekte so ändern, dass alle Ausgaben im selben Ordner abgelegt werden.

So legen Sie alle Ausgaben in einem gemeinsamen Verzeichnis ab

  1. Bereinigen Sie die Projektmappe, um alle vorhandenen Ausgabedateien zu entfernen (Build>Clean solution).

  2. Klicken Sie auf ein Projekt in der Projektmappe.

  3. Klicken Sie im Menü Projekt auf Eigenschaften.

  4. Wählen Sie in jedem Projekt je nach Typ entweder Kompilieren oder Erstellen aus und legen Sie den Ausgabepfad oder den Basispfad für Ausgabe auf einen Ordner fest, der für alle Projekte in der Projektmappe verwendet werden soll.

  5. Öffnen Sie die Projektdatei für das Projekt, und fügen Sie der ersten Eigenschaftengruppe die folgende Eigenschaftendeklaration hinzu.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    Wenn Sie UseCommonOutputDirectory auf true festlegen, wird Visual Studio und der zugrunde liegenden Build-Engine (MSBuild) mitgeteilt, dass Sie mehrere Projektausgaben im selben Ordner ablegen. Daher lässt MSBuild den Kopierschritt aus, der normalerweise erfolgt, wenn Projekte von anderen Projekten abhängig sind.

  6. Wiederholen Sie die Schritte 2 bis 5 für alle Projekte in der Projektmappe. Sie können einige Projekte überspringen, wenn Sie über Ausnahmeprojekte verfügen, die nicht das allgemeine Ausgabeverzeichnis verwenden sollten.

So legen Sie das Zwischenausgabeverzeichnis für ein Projekt fest (.NET-Projekte)

  1. Bereinigen Sie das Projekt, um alle vorhandenen Ausgabedateien zu entfernen.

  2. Öffnen Sie die Projektdatei.

  3. Fügen Sie der ersten Eigenschaftengruppe die folgende Eigenschaftendeklaration hinzu.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    Der Pfad ist relativ zur Projektdatei, oder Sie können einen absoluten Pfad verwenden. Wenn Sie den Projektnamen in den Pfad aufnehmen möchten, können Sie darauf verweisen, indem Sie die MSBuild-Eigenschaften $(MSBuildProjectName), $(MSBuildProjectDirectory) verwenden. Weitere Informationen zu Eigenschaften, die Sie verwenden können, finden Sie unter Reservierte und bekannte Eigenschaften für MSBuild.

  4. Visual Studio erstellt beim Erstellen weiterhin den Ordner „obj“ unter dem Projektordner, er ist aber leer. Sie können ihn im Rahmen des Buildprozesses löschen. Eine Möglichkeit besteht darin, ein Postbuildereignis hinzuzufügen, um den folgenden Befehl auszuführen:

    rd "$(ProjectDir)obj" /s /q
    

    Weitere Informationen finden Sie unter Angeben benutzerdefinierter Buildereignisse.

In Visual Studio 2022 gibt es je nach Projekttyp unterschiedliche Project Designer-Benutzeroberflächen. C#-.NET Framework und alle Visual Basic-Projekte verwenden den älteren .NET-Projekt-Designer, aber C#-.NET Core-Projekte (und .NET 5 und höher) verwenden den aktuellen .NET-Projekt-Designer. C++-Projekte verwenden ihre eigene Benutzeroberfläche für Eigenschaftenseiten. Die Schritte in diesem Abschnitt hängen davon ab, welchen Projekt-Designer Sie verwenden.

Ändern des Buildausgabeverzeichnisses

Dieses Verfahren gilt für C#-Projekte in Visual Studio 2022 für .NET Core oder .NET 5 und höher.

  1. Bereinigen Sie das Projekt oder die Projektmappe, um alle vorhandenen Ausgabedateien zu entfernen (Build>Clean solution).

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaften aus.

  3. Erweitern Sie den Abschnitt Build, und scrollen Sie nach unten zum Unterabschnitt Ausgabe.

  4. Machen Sie den Basispfad für Ausgabe für C# ausfindig und geben Sie den Pfad zum Generieren der Ausgabe (absolut oder relativ zum Stammverzeichnis des Projekts) ein, oder wählen Sie Durchsuchen, um stattdessen zu diesem Ordner zu navigieren. Beachten Sie, dass der Konfigurationsname an den Basisausgabepfad angefügt wird, um den tatsächlichen Ausgabepfad zu generieren.

    Screenshot der Eigenschaft „Ausgabepfad“ für ein .NET Core-C#-Projekt.

    Hinweis

    Einige Projekte (.NET und ASP.NET Core) enthalten standardmäßig die Frameworkversion oder den Laufzeitbezeichner im endgültigen Ausgabepfad. Wenn Sie dies ändern möchten, klicken Sie im Projektmappen-Explorer auf den Projektknoten, wählen Sie Projektdatei bearbeiten aus, und fügen Sie Folgendes hinzu:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

Erstellen in einem gemeinsamen Ausgabeverzeichnis

Standardmäßig erstellt Visual Studio jedes Projekt in einer Projektmappe in einem eigenen Ordner in der Projektmappe. Sie können die Buildausgabepfade Ihrer Projekte so ändern, dass alle Ausgaben im selben Ordner abgelegt werden.

  1. Bereinigen Sie die Projektmappe, um alle vorhandenen Ausgabedateien zu entfernen (Build>Clean solution).

  2. Klicken Sie auf ein Projekt in der Projektmappe.

  3. Klicken Sie im Menü Projekt auf Eigenschaften.

  4. Wählen Sie in jedem Projekt je nach Typ entweder Kompilieren oder Erstellen aus und legen Sie den Ausgabepfad oder den Basispfad für Ausgabe auf einen Ordner fest, der für alle Projekte in der Projektmappe verwendet werden soll.

  5. Öffnen Sie die Projektdatei für das Projekt, und fügen Sie der ersten Eigenschaftengruppe die folgende Eigenschaftendeklaration hinzu.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    Wenn Sie UseCommonOutputDirectory auf true festlegen, wird Visual Studio und der zugrunde liegenden Build-Engine (MSBuild) mitgeteilt, dass Sie mehrere Projektausgaben im selben Ordner ablegen. Daher lässt MSBuild den Kopierschritt aus, der normalerweise erfolgt, wenn Projekte von anderen Projekten abhängig sind.

  6. Wiederholen Sie die Schritte 2 bis 5 für alle Projekte in der Projektmappe. Sie können einige Projekte überspringen, wenn Sie über Ausnahmeprojekte verfügen, die nicht das allgemeine Ausgabeverzeichnis verwenden sollten.

Tipp

Wenn die Ausgabe nicht an dem festgelegten Speicherort generiert wird, müssen Sie in der Menüleiste von Visual Studio die entsprechende Konfiguration (z. B. Debuggen oder Version) erstellen.

Screenshot der Auswahl der Buildkonfiguration in Visual Studio 2022.

Legen Sie das Zwischenausgabeverzeichnis für ein Projekt fest

Dieses Verfahren gilt für C#-Projekte in Visual Studio 2022 für .NET Core oder .NET 5 und höher.

  1. Bereinigen Sie das Projekt, um alle vorhandenen Ausgabedateien zu entfernen.

  2. Öffnen Sie die Projektdatei.

  3. Fügen Sie der ersten Eigenschaftengruppe die folgende Eigenschaftendeklaration hinzu.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    Der Pfad ist relativ zur Projektdatei, oder Sie können einen absoluten Pfad verwenden. Wenn Sie den Projektnamen in den Pfad aufnehmen möchten, können Sie darauf verweisen, indem Sie die MSBuild-Eigenschaften $(MSBuildProjectName), $(MSBuildProjectDirectory) verwenden. Weitere Informationen zu Eigenschaften, die Sie verwenden können, finden Sie unter Reservierte und bekannte Eigenschaften für MSBuild.

  4. Visual Studio erstellt beim Erstellen weiterhin den Ordner „obj“ unter dem Projektordner, er ist aber leer. Sie können ihn im Rahmen des Buildprozesses löschen. Eine Möglichkeit besteht darin, ein Postbuildereignis hinzuzufügen, um den folgenden Befehl auszuführen:

    rd "$(ProjectDir)obj" /s /q
    

    Weitere Informationen finden Sie unter Angeben benutzerdefinierter Buildereignisse.

Verwenden von Directory.Build.props zum Festlegen des Ausgabeverzeichnisses

Wenn Sie über eine große Anzahl von Projekten verfügen und den Ausgabeordner für alle ändern möchten, wäre es mühsam und fehleranfällig, jeden mit den weiter oben in diesem Artikel beschriebenen Methoden zu ändern. In solchen Fällen können Sie eine Datei im Projektmappenordner Directory.Build.props erstellen, um die entsprechenden MSBuild-Eigenschaften an einem Ort festzulegen, und sie auf alle Projekte in der Projektmappe anzuwenden. Indem Sie eine Datei mit diesem bestimmten Namen in den übergeordneten Ordner aller Projekte einfügen, die Sie davon betreffen haben möchten, können Sie Anpassungen an einer zentralen Stelle ganz einfach verwalten und somit das Ändern der Werte vereinfachen. Siehe Anpassen des Builds nach Ordner.

Verwenden von Artefakten zum Organisieren der Buildausgabe

Bei .NET 8-Projekten können Sie die Artefaktfunktionalität verwenden, um die Ausgabe auf hochgradig anpassbare und flexible Weise anzuordnen. Weitere Informationen finden Sie unter „Ausgabelayout für Artefakte“.