Delen via


De build-uitvoermap wijzigen

U kunt de locatie opgeven van de uitvoer die door uw project wordt gegenereerd per configuratie (voor foutopsporing, release of beide). Met standaardinstellingen variëren uitvoermappen per projecttype en SDK, met sommige projecten die platformspecifieke of frameworkspecifieke submappen gebruiken.

Visual Studio biedt eigenschappen waarmee u tussenliggende en uiteindelijke uitvoer in aangepaste mappen kunt plaatsen door de paden op te geven ten opzichte van de projectmap of een absoluut pad ergens in het bestandssysteem. Naast de instellingen die u opgeeft in de eigenschappen van het Visual Studio-project, kunt u ook de uitvoer verder aanpassen door het projectbestand te bewerken en de mogelijkheden van MSBuild en de .NET SDK te gebruiken voor volledige controle over alle aspecten van projectuitvoer, voor afzonderlijke projecten of op oplossingsniveau voor veel projecten.

De build-uitvoermap wijzigen

  1. Schoon het project of de oplossing op om bestaande uitvoerbestanden te verwijderen (Build>Clean solution).

  2. Als u de eigenschappenpagina's van het project wilt openen, klikt u met de rechtermuisknop op het projectknooppunt in Solution Explorer en selecteert u Eigenschappen.

  3. Selecteer het juiste tabblad op basis van uw projecttype:

    • Selecteer voor C# het tabblad Build.
    • Selecteer voor Visual Basic het tabblad Compileren.
    • Selecteer voor C++ of JavaScript het tabblad Algemeen.
  4. Kies in de vervolgkeuzelijst configuratie bovenaan de configuratie waarvan u de locatie van het uitvoerbestand wilt wijzigen (Foutopsporing, Releaseof Alle configuraties).

  5. Zoek de vermelding van het uitvoerpad op de pagina. Dit verschilt afhankelijk van uw projecttype:

    • uitvoerpad voor C#- en JavaScript-projecten
    • Uitvoerpad maken voor Visual Basic-projecten
    • uitvoermap voor Visual C++-projecten

    Typ het pad waarnaar uitvoer moet worden gegenereerd (absoluut of ten opzichte van de hoofdmap van het project) of kies Bladeren om naar die map te bladeren.

    eigenschap Uitvoerpad voor een Visual Studio C#-project

    Notitie

    Sommige projecten (.NET en ASP.NET Core) bevatten standaard de frameworkversie of de runtime-identificatie in het buildpad. Als u dit wilt wijzigen, klikt u met de rechtermuisknop op het projectknooppunt in Solution Explorer-, selecteert u Projectbestand bewerkenen voegt u het volgende toe:

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

Fooi / Tip

Als de uitvoer niet wordt gegenereerd op de locatie die u hebt opgegeven, moet u ervoor zorgen dat u de bijbehorende configuratie bouwt (bijvoorbeeld Foutopsporing of Release) door deze te selecteren op de menubalk van Visual Studio.

Bouwconfiguratiekiezers in Visual Studio 2019.

Bouwen naar een algemene uitvoermap

Visual Studio bouwt standaard elk project in een oplossing in een eigen map in de oplossing. U kunt de build-uitvoerpaden van uw projecten wijzigen om ervoor te zorgen dat alle uitvoer in dezelfde map wordt geplaatst.

Alle oplossingsuitvoer in een algemene map plaatsen

  1. Schoon de oplossing op om bestaande uitvoerbestanden te verwijderen (Build>Clean solution).

  2. Klik op één project in de oplossing.

  3. Klik in het menu Project op Eigenschappen.

  4. Kies in elk project, afhankelijk van het type, Compileer of Bouwenen stel uitvoerpad of basisuitvoerpad in op een map voor gebruik door alle projecten in de oplossing.

  5. Open het projectbestand voor het project en voeg de volgende eigenschapsdeclaratie toe aan de eerste eigenschapsgroep.

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

    Als u UseCommonOutputDirectory instelt op true vertelt Visual Studio en de onderliggende build-engine (MSBuild) dat u meerdere projectuitvoer in dezelfde map plaatst. MsBuild laat dus de kopieerstap weg die normaal gesproken plaatsvindt wanneer projecten afhankelijk zijn van andere projecten.

  6. Herhaal stap 2-5 voor alle projecten in de oplossing. U kunt sommige projecten overslaan als u een aantal uitzonderlijke projecten hebt die de algemene uitvoermap niet mogen gebruiken.

De tussenliggende uitvoermap voor een project (.NET-projecten) instellen

  1. Schoon het project op om bestaande uitvoerbestanden te verwijderen.

  2. Open het projectbestand.

  3. Voeg de volgende eigenschapsdeclaratie toe aan de eerste eigenschapsgroep.

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

    Het pad is relatief ten opzichte van het projectbestand of u kunt een absoluut pad gebruiken. Als u de projectnaam in het pad wilt plaatsen, kunt u ernaar verwijzen met behulp van de MSBuild-eigenschappen $(MSBuildProjectName), $(MSBuildProjectDirectory). Voor meer eigenschappen die u kunt gebruiken, zie gereserveerde en bekende eigenschappen van MSBuild.

  4. Visual Studio maakt nog steeds de obj-map onder de projectmap wanneer u bouwt, maar deze is leeg. U kunt het verwijderen als onderdeel van het buildproces. Een manier om dit te doen, is door een gebeurtenis na de build toe te voegen om de volgende opdracht uit te voeren:

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

    Zie Aangepaste bouwactiviteiten opgeven.

In Visual Studio 2022 zijn er verschillende gebruikersinterfaces voor Project Designer, afhankelijk van uw projecttype. .NET Framework-projecten maken gebruik van de verouderde .NET Project Designer, maar .NET Core-projecten (en .NET 5 en hoger) maken gebruik van de huidige .NET Project Designer. C++ projecten gebruiken hun eigen gebruikersinterface voor eigenschappenpagina's. De stappen in deze sectie zijn afhankelijk van de projectontwerper die u gebruikt.

De build-uitvoermap wijzigen

Deze procedure is van toepassing op projecten in Visual Studio 2022 die gericht zijn op .NET Core of .NET 5 en hoger.

  1. Schoon het project of de oplossing op om bestaande uitvoerbestanden te verwijderen (Build>Clean solution).

  2. Klik met de rechtermuisknop op het projectknooppunt in Solution Explorer- en selecteer Eigenschappen.

  3. Vouw voor C#-projecten de sectie Build uit en schuif omlaag naar de subsectie Output. Vouw voor Visual Basic de sectie Compile uit en kijk onder General.

  4. Zoek het basisuitvoerpaden typ het pad waarnaar uitvoer moet worden gegenereerd (absoluut of relatief ten opzichte van de hoofdmap van het project) of kies Bladeren om naar die map te bladeren. Houd er rekening mee dat de configuratienaam wordt toegevoegd aan het basisuitvoerpad om het werkelijke uitvoerpad te genereren.

    C#:

    Schermopname van de eigenschap Uitvoerpad voor een .NET Core C#-project.

    Visual Basic:

    Schermopname van de eigenschap Uitvoerpad voor een .NET Core Visual Basic-project.

    Notitie

    Sommige projecten (.NET en ASP.NET Core) bevatten standaard de frameworkversie of runtime-id in het uiteindelijke uitvoerpad. Als u dit wilt wijzigen, klikt u met de rechtermuisknop op het projectknooppunt in Solution Explorer-, selecteert u Projectbestand bewerkenen voegt u het volgende toe:

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

Bouwen naar een algemene uitvoermap

Visual Studio bouwt standaard elk project in een oplossing in een eigen map in de oplossing. U kunt de build-uitvoerpaden van uw projecten wijzigen om ervoor te zorgen dat alle uitvoer in dezelfde map wordt geplaatst.

  1. Schoon de oplossing op om bestaande uitvoerbestanden te verwijderen (Build>Clean solution).

  2. Klik op één project in de oplossing.

  3. Klik in het menu Project op Eigenschappen.

  4. Selecteer in elk project, afhankelijk van het type, compileren of bouwenen stel het uitvoerpad of het basisuitvoerpad in naar een map voor gebruik voor alle projecten in de oplossing.

  5. Open het projectbestand voor het project en voeg de volgende eigenschapsdeclaratie toe aan de eerste eigenschapsgroep.

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

    Als u UseCommonOutputDirectory instelt op true vertelt Visual Studio en de onderliggende build-engine (MSBuild) dat u meerdere projectuitvoer in dezelfde map plaatst. MsBuild laat dus de kopieerstap weg die normaal gesproken plaatsvindt wanneer projecten afhankelijk zijn van andere projecten.

  6. Herhaal stap 2-5 voor alle projecten in de oplossing. U kunt sommige projecten overslaan als u een aantal uitzonderlijke projecten hebt die de algemene uitvoermap niet mogen gebruiken.

Tip

Als de uitvoer niet wordt gegenereerd op de locatie die u hebt opgegeven, moet u ervoor zorgen dat u de bijbehorende configuratie bouwt (bijvoorbeeld Foutopsporing of Release) door deze te selecteren op de menubalk van Visual Studio.

schermopname van de buildconfiguratiekiezer in Visual Studio 2022.

De tussenliggende uitvoermap voor een project instellen

Deze procedure is van toepassing op projecten in Visual Studio 2022 die gericht zijn op .NET Core of .NET 5 en hoger.

  1. Schoon het project op om bestaande uitvoerbestanden te verwijderen.

  2. Open het projectbestand.

  3. Voeg de volgende eigenschapsdeclaratie toe aan de eerste eigenschapsgroep.

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

    Het pad is relatief ten opzichte van het projectbestand of u kunt een absoluut pad gebruiken. Als u de projectnaam in het pad wilt plaatsen, kunt u ernaar verwijzen met behulp van de MSBuild-eigenschappen $(MSBuildProjectName), $(MSBuildProjectDirectory). Voor meer eigenschappen die u kunt gebruiken, zie gereserveerde en bekende eigenschappen van MSBuild.

  4. Visual Studio maakt nog steeds de obj-map onder de projectmap wanneer u bouwt, maar deze is leeg. U kunt het verwijderen als onderdeel van het buildproces. Een manier om dit te doen, is door een gebeurtenis na de build toe te voegen om de volgende opdracht uit te voeren:

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

    Zie Aangepaste build-gebeurtenissen opgeven.

Directory.Build.props gebruiken om de uitvoermap in te stellen

Als u een groot aantal projecten hebt en u de uitvoermap voor deze projecten wilt wijzigen, is het tijdrovend en foutgevoelig om elk project te wijzigen met behulp van de methoden die eerder in dit artikel zijn beschreven. In dergelijke gevallen kunt u een bestand maken in de oplossingsmap, Directory.Build.props, om de juiste MSBuild-eigenschappen op één plaats in te stellen, zodat deze van toepassing is op alle projecten in de oplossing. Door een bestand met deze specifieke naam in de bovenliggende map te plaatsen van alle projecten die u wilt wijzigen, kunt u eenvoudig aanpassingen op één plaats onderhouden en de waarden eenvoudig wijzigen. Zie De build op map aanpassen.

Artefacten gebruiken om build-uitvoer te organiseren

Voor .NET 8-projecten kunt u de functionaliteit voor artefacten gebruiken om uitvoer op een zeer aanpasbare en flexibele manier te rangschikken. Zie Indeling van de uitvoer van artefacten.