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.
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 Buildausgabeverzeichnisses
Dieses Verfahren gilt für Projekte in Visual Studio 2022 für .NET Core oder .NET 5 und höher.
Bereinigen Sie das Projekt oder die Projektmappe, um alle vorhandenen Ausgabedateien zu entfernen (Build>Bereinigungslösung).
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaften aus.
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.
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#:
Visual Basic:
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 der Lösung. Sie können die Buildausgabepfade Ihrer Projekte ändern, um zu erzwingen, dass alle Ausgaben in demselben Ordner platziert werden.
Säubern Sie die Lösung, um vorhandene Ausgabedateien zu löschen (Build>Clean solution).
Klicken Sie auf ein Projekt in der Projektmappe.
Klicken Sie im Menü Projekt auf Eigenschaften.
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.
Ö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.
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.
Dieses Verfahren gilt für .NET Framework-Projekte.
Bereinigen Sie das Projekt oder die Projektmappe, um alle vorhandenen Ausgabedateien zu entfernen (Build>Bereinigungslösung).
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaften aus.
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 oben in der Konfigurationsliste die Konfiguration aus, deren Ausgabedateispeicherort Sie ändern möchten (Debug-, Release-oder Alle Konfigurationen).
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
Geben Sie den Pfad ein, in dem die Ausgabe generiert werden soll (absolut oder relativ zum Stammprojektverzeichnis), oder wählen Sie Durchsuchen aus, um stattdessen zu diesem Ordner zu navigieren.
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.
Säubern Sie die Lösung, um vorhandene Ausgabedateien zu löschen (Build>Clean solution).
Klicken Sie auf ein Projekt in der Projektmappe.
Klicken Sie im Menü Projekt auf Eigenschaften.
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.
Ö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.
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.
So ändern Sie das Buildausgabeverzeichnis für ein einzelnes C++-Projekt:
Bereinigen Sie das Projekt, um alle vorhandenen Ausgabedateien zu entfernen (Build>Bereinigungslösung).
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaften aus.
Wählen Sie die Registerkarte "Allgemein" aus.
Wählen Sie oben in der Konfigurationsliste die Konfiguration aus, deren Ausgabedateispeicherort Sie ändern möchten (Debug-, Release-oder Alle Konfigurationen).
Wenn Sie Alle Konfigurationen oder Alle Plattformen anzeigen, könnten Sie <different options> für einige der Eigenschaften sehen. Eigenschaftswerte können für jede Kombination aus Konfiguration und Plattform unterschiedlich sein. Während Sie sie einzeln festlegen können, verwenden die Standardeinstellungen denselben Ausdruck für alle Kombinationen, aber sie verwenden die Makros $(Configuration) und $(Platform), um einen eindeutigen Ausgabepfad für jede Kombination zu erzeugen.
Suchen Sie den Ausgabepfad im Ausgabeverzeichnis. Die Dropdownliste bietet Optionen zum Bearbeiten des Ausdrucks, zum Pfad auswählen oder (falls relevant) <Erben von übergeordneten Element oder dem Projektstandard>.
Geben Sie den Pfad ein, in dem die Ausgabe generiert werden soll (absolut oder relativ zum Stammprojektverzeichnis), oder wählen Sie Durchsuchen aus, um stattdessen zu diesem Ordner zu navigieren.
Klicken Sie bei Ausdrücken, die von Makrowerten abhängig sind, auf Makros >>, um die verfügbaren Makros und deren Werte anzuzeigen. Im Dialogfeld sehen Sie auch den endgültigen erweiterten Wert der Eigenschaft mit den aktuellen Makrowerten.
Alle Umgebungsvariablen werden in MSBuild als Eigenschaften verfügbar gemacht. Wenn Sie also auf eine Umgebungsvariable verweisen müssen, können Sie mithilfe der Syntax $(VAR) für die Umgebungsvariable VARdarauf verweisen. Achten Sie beim Erstellen eines Pfads mithilfe von Makros und Umgebungsvariablen darauf, ob ein Backslash benötigt wird.
Diese Prozedur legt eine Eigenschaft OutDir in der Projektdatei fest (.vcxproj). Wenn Sie die Projektdatei nach dem Festlegen dieser Eigenschaft anzeigen, sehen Sie, dass ein Code ähnlich dem Folgenden hinzugefügt wurde:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>C:\MyOutputFolder</OutDir>
</PropertyGroup>
Weitere Informationen finden Sie unter Allgemeine Eigenschaftenseite und um sicherzustellen, dass Sie mit der Arbeit mit C++-Eigenschaftenseiten vertraut sind, um zu verstehen, wie Eigenschaftswerte von Konfigurationen und Plattformen abhängen können, finden Sie unter Arbeiten mit Projekteigenschaften.
Dieses Verfahren gilt für Projekte in Visual Studio 2022 für .NET Core oder .NET 5 und höher.
Bereinigen Sie das Projekt, um alle vorhandenen Ausgabedateien zu entfernen.
Öffnen Sie die Projektdatei.
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.
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.
Dieses Verfahren gilt für .NET Framework-Projekte.
Bereinigen Sie das Projekt, um alle vorhandenen Ausgabedateien zu entfernen.
Öffnen Sie die Projektdatei.
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.
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 Sie die eigenschaft Intermediate Directory, um das Verzeichnis für zwischengeschaltete Ausgaben wie z. B. .obj dateien festzulegen.
In der Projektdatei ist die Eigenschaft IntDir. Um die Pfade für zwischenzeitliche und endgültige Ausgabe in der Projektdatei festzulegen, fügen Sie eine Eigenschaftengruppe wie folgt hinzu:
<PropertyGroup>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)int\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
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.
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.
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 von C++-Builds.
Um sowohl die Zwischen- als auch die endgültigen Ausgabepfade in Directory.build.propsfestzulegen, empfiehlt es sich, $(MSBuildThisFileDirectory) anstelle von $(SolutionDir) zu verwenden, um Befehlszeilenprojektbuilds zu unterstützen, wobei $(SolutionDir) nicht definiert ist. Der folgende Code legt beides auf eine Weise fest, die für Visual Studio-Builds und Befehlszeilenbuilds einzelner Projekte funktioniert:
<Project>
<PropertyGroup>
<SolutionDir Condition="'$(SolutionDir)' == ''">$(MSBuildThisFileDirectory)</SolutionDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)int\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
</Project>
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.
Verwandte Inhalte