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 je nach Projekttyp und SDK, bei einigen Projekten mit plattformspezifischen oder frameworkspezifischen Unterordnern.

Visual Studio stellt Eigenschaften bereit, mit denen Sie zwischene 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 Build-Ausgabeverzeichnisses

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

  2. Um die Eigenschaftenseiten des Projekts zu öffnen, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaftenaus.

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

    • 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 aus.
  4. Wählen Sie oben in der Konfigurationsliste die Konfiguration aus, deren Ausgabedateispeicherort Sie ändern möchten (Debug-, Release-oder Alle Konfigurationen).

  5. Suchen Sie den Ausgabepfadeintrag auf der Seite, dieser variiert 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 ein, um die Ausgabe zu generieren (absolut oder relativ zum Stammprojektverzeichnis), oder wählen Sie Durchsuchen aus, um zu diesem Ordner zu navigieren.

    Ausgabepfadeigenschaft für ein Visual Studio C#-Projekt

    Anmerkung

    Einige Projekte (.NET und ASP.NET Core) enthalten standardmäßig die Frameworkversion oder den Laufzeitbezeichner im Buildpfad. Um dies zu ändern, klicken Sie mit der rechten Maustaste auf den Projektknoten im Projektmappen-Explorer, wählen Sie Projektdatei bearbeitenaus, 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 Lösung in einem eigenen Ordner innerhalb der Lösung. Sie können die Buildausgabepfade Ihrer Projekte ändern, um zu erzwingen, dass alle Ausgaben in demselben Ordner platziert werden.

So platzieren Sie alle Lösungsausgaben in einem gemeinsamen Verzeichnis

  1. Säubern Sie die Lösung, um vorhandene Ausgabedateien zu löschen (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 Eigenschaftsdeklaration hinzu.

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

    Wenn Sie UseCommonOutputDirectory auf true festlegen, teilt Visual Studio und dem zugrunde liegenden Buildmodul (MSBuild) mit, dass Sie mehrere Projektausgaben im selben Ordner ablegen. Daher lässt MSBuild den Kopierschritt aus, der normalerweise auftritt, wenn Projekte von anderen Projekten abhängen.

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

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

  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 einfügen möchten, können Sie mithilfe der MSBuild-Eigenschaften $(MSBuildProjectName), $(MSBuildProjectDirectory)darauf verweisen. 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, ist aber leer. Sie können sie als Teil des Buildprozesses löschen. Eine Möglichkeit hierfür ist das Hinzufügen eines Postbuildereignisses zum Ausführen des folgenden Befehls:

    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. .NET Framework-Projekte verwenden den älteren .NET Project Designer, aber .NET Core -Projekte (und .NET 5 und höher) verwenden den aktuellen .NET Project Designer. C++-Projekte verwenden ihre eigene Benutzeroberfläche für Eigenschaftenseiten. Die Schritte in diesem Abschnitt hängen davon ab, welche Project Designer Sie verwenden.

Ändern des Build-Ausgabeverzeichnisses

Dieses Verfahren gilt für 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>Bereinigungslösung).

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

  3. Erweitern Sie für C#-Projekte den Abschnitt Build, und scrollen Sie nach unten zum Unterabschnitt Ausgabe. Erweitern Sie für Visual Basic den Abschnitt Kompilierung, und suchen Sie unter Allgemein.

  4. Suchen Sie den Basisausgabepfad, und geben Sie den Pfad ein, an den die Ausgabe generiert werden soll (absolut oder relativ zum Stammprojektverzeichnis), oder wählen Sie Durchsuchen Sie aus, 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.

    C#:

    Screenshot der Ausgabepfadeigenschaft für ein .NET Core C#-Projekt.

    Visual Basic:

    Screenshot mit der Ausgabe-Pfad-Eigenschaft für ein .NET Core Visual Basic-Projekt.

    Anmerkung

    Einige Projekte (.NET und ASP.NET Core) enthalten standardmäßig die Frameworkversion oder den Laufzeitbezeichner im endgültigen Ausgabepfad. Um dies zu ändern, klicken Sie mit der rechten Maustaste auf den Projektknoten im Projektmappen-Explorer, wählen Sie Projektdatei bearbeitenaus, 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 Lösung in einem eigenen Ordner innerhalb dieser Lösung. Sie können die Buildausgabepfade Ihrer Projekte ändern, um zu erzwingen, dass alle Ausgaben in demselben Ordner platziert werden.

  1. Bereinigen Sie die Projektmappe, um alle vorhandenen Ausgabedateien zu entfernen (Build>Bereinigungslösung).

  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 Eigenschaftsdeklaration hinzu.

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

    Wenn Sie UseCommonOutputDirectory auf true festlegen, teilt Visual Studio und dem zugrunde liegenden Buildmodul (MSBuild) mit, dass Sie mehrere Projektausgaben im selben Ordner ablegen. Daher lässt MSBuild den Kopierschritt aus, der normalerweise auftritt, wenn Projekte von anderen Projekten abhängen.

  6. Wiederholen Sie die Schritte 2 bis 5 für alle Projekte in der Projektmappe. Sie können einige Projekte überspringen, wenn Sie über einige außergewöhnliche Projekte verfügen, die das allgemeine Ausgabeverzeichnis nicht 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 Buildkonfigurationsauswahl in Visual Studio 2022.

Festlegen des Zwischenausgabeverzeichnisses für ein Projekt

Dieses Verfahren gilt für 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 einfügen möchten, können Sie mithilfe der MSBuild-Eigenschaften $(MSBuildProjectName), $(MSBuildProjectDirectory)darauf verweisen. 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, ist aber leer. Sie können sie als Teil des Buildprozesses löschen. Eine Möglichkeit hierfür ist das Hinzufügen eines Postbuildereignisses zum Ausführen des folgenden Befehls:

    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 Lösungsordner erstellen, Directory.Build.props, um die entsprechenden MSBuild-Eigenschaften an einem Ort festzulegen, um 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 betreffen möchten, können Sie Anpassungen an einer zentralen Stelle problemlos verwalten und die Werte ganz einfach ändern. Siehe Anpassen des Builds nach Ordnern.

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. Siehe Ausgabelayout für Artefakte.