Dela via


Ändra utdatakatalogen för bygget

Du kan ange platsen för utdata som genereras av projektet per konfiguration (för felsökning, lansering eller båda). Med standardinställningar varierar utdatamapparna efter projekttyp och SDK, med vissa projekt som använder plattformsspecifika eller ramverksspecifika undermappar.

Visual Studio innehåller egenskaper som gör att du kan placera mellanliggande och slutliga utdata i anpassade mappar, antingen genom att ange sökvägarna i förhållande till projektmappen eller en absolut sökväg var som helst i filsystemet. Förutom de inställningar som du anger i Visual Studio-projektegenskaperna kan du även anpassa utdata ytterligare genom att redigera projektfilen och använda funktionerna i MSBuild och .NET SDK för fullständig kontroll över alla aspekter av projektutdata, antingen för enskilda projekt eller på lösningsnivå för många projekt.

Ändra utdatakatalogen för bygget

  1. Rensa projektet eller lösningen för att ta bort befintliga utdatafiler (Skapa>Rensa lösning).

  2. Om du vill öppna projektets egenskapssidor högerklickar du på projektnoden i Solution Explorer och väljer Egenskaper.

  3. Välj lämplig flik baserat på projekttypen:

    • Välj fliken Build för C#.
    • För Visual Basic väljer du fliken Kompilera.
    • För C++ eller JavaScript väljer du fliken Allmänt.
  4. I listrutan konfiguration högst upp väljer du den konfiguration vars utdatafil du vill ändra (Felsök, Releaseeller Alla konfigurationer).

  5. Hitta posten för utdatavägen på sidan – den skiljer sig beroende på projekttyp:

    • utdatasökväg för C#- och JavaScript-projekt
    • Skapa utdatasökväg för Visual Basic-projekt
    • Utdatakatalog för Visual C++-projekt

    Ange sökvägen dit utdata ska genereras (absolut eller relativt till projektets rotkatalog), eller välj Bläddra för att välja den mappen.

    Egenskapen för utdatasökväg i ett Visual Studio C#-projekt

    Not

    Vissa projekt (.NET och ASP.NET Core) kommer som standard att inkludera ramverksversionen eller köridentifieraren i byggsökvägen. Om du vill ändra detta högerklickar du på projektnoden i Solution Explorer, väljer Redigera projektfiloch lägger till följande:

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

Tips

Om utdata inte genereras till den plats som du angav kontrollerar du att du skapar motsvarande konfiguration (till exempel Felsöka eller Release) genom att välja den på menyraden i Visual Studio.

Väljare för byggkonfiguration i Visual Studio 2019.

Skapa i en gemensam utdatakatalog

Som standard skapar Visual Studio varje projekt i en lösning i sin egen mapp i lösningen. Du kan ändra byggutdatasökvägarna för dina projekt för att tvinga alla utdata att placeras i samma mapp.

Så här placerar du alla lösningsutdata i en gemensam katalog

  1. Rensa lösningen för att ta bort befintliga utdatafiler (Bygg>Rensa lösning).

  2. Klicka på ett projekt i lösningen.

  3. På menyn Project klickar du på Egenskaper.

  4. I varje projekt, beroende på dess typ, väljer du antingen Kompilera eller Bygg, och anger sökvägen för Utdata eller Bas-utdatasökväg till en mapp som ska användas för alla projekt i lösningen.

  5. Öppna projektfilen för projektet och lägg till följande egenskapsdeklaration i den första egenskapsgruppen.

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

    Om du anger UseCommonOutputDirectory till true meddelar Visual Studio och dess underliggande byggmotor (MSBuild) att du lägger flera projektutdata i samma mapp, och därför utelämnar MSBuild kopieringssteget som normalt inträffar när projekt är beroende av andra projekt.

  6. Upprepa steg 2–5 för alla projekt i lösningen. Du kan hoppa över vissa projekt om du har några exceptionella projekt som inte bör använda den gemensamma utdatakatalogen.

Så här anger du den mellanliggande utdatakatalogen för ett projekt (.NET-projekt)

  1. Rensa projektet för att ta bort alla befintliga utdatafiler.

  2. Öppna projektfilen.

  3. Lägg till följande egenskapsdeklaration i den första egenskapsgruppen.

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

    Sökvägen är relativ till projektfilen, eller så kan du använda en absolut sökväg. Om du vill placera projektnamnet i sökvägen kan du referera till det med hjälp av egenskaperna MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). För fler egenskaper som du kan använda, se reserverade och kända egenskaper för MSBuild.

  4. Visual Studio skapar fortfarande mappen obj under projektmappen när du skapar den, men den är tom. Du kan ta bort den som en del av byggprocessen. Ett sätt att göra det är att lägga till en händelse efter bygget för att köra följande kommando:

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

    Se Ange anpassade bygghändelser.

I Visual Studio 2022 finns det olika användargränssnitt för Project Designer, beroende på projekttyp. .NET Framework-projekt använder den äldre .NET Project Designer, men .NET Core-projekt (och .NET 5 och senare) använder den aktuella .NET Project Designer. C++-projekt använder sina egna egenskapssidors användargränssnitt. Stegen i det här avsnittet beror på vilken Projektdesigner du använder.

Ändra utdatakatalogen för bygget

Den här proceduren gäller för projekt i Visual Studio 2022 som riktar sig till .NET Core eller .NET 5 och senare.

  1. Rensa projektet eller lösningen för att ta bort befintliga utdatafiler (Bygg>Rensa lösning).

  2. Högerklicka på projektnoden i Solution Explorer och välj Egenskaper.

  3. För C#-projekt expanderar du avsnittet Build och rullar ned till underavsnittet Output. För Visual Basic expanderar du avsnittet Kompilera och tittar under Allmänt.

  4. Leta upp Base-utdatasökvägenoch skriv in sökvägen där du vill generera utdata (absolut eller relativt till rotprojektkatalogen) eller välj Bläddra för att istället bläddra till den mappen. Observera att konfigurationsnamnet läggs till i basutdatasökvägen för att generera den faktiska utdatasökvägen.

    C#:

    Skärmbild som visar egenskapen Utdatasökväg för ett .NET Core C#-projekt.

    Visual Basic:

    Skärmbild som visar egenskapen Utdatasökväg för ett .NET Core Visual Basic-projekt.

    Not

    Vissa projekt (.NET och ASP.NET Core) innehåller som standard ramverksversionen eller körningsidentifieraren i den slutliga utdatasökvägen. Om du vill ändra detta högerklickar du på projektnoden i Solution Explorer, väljer Redigera projektfiloch lägger till följande:

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

Skapa i en gemensam utdatakatalog

Som standard skapar Visual Studio varje projekt i en lösning i sin egen mapp i lösningen. Du kan ändra byggutdatasökvägarna för dina projekt för att tvinga alla utdata att placeras i samma mapp.

  1. Rensa lösningen för att ta bort befintliga utdatafiler (Bygg>Rensa lösning).

  2. Klicka på ett projekt i lösningen.

  3. På menyn Project klickar du på Egenskaper.

  4. I varje projekt väljer du antingen Kompilera eller Bygg, och anger sökvägen för Utdata eller Basutdatasökväg till en mapp att använda för alla projekt i lösningen.

  5. Öppna projektfilen för projektet och lägg till följande egenskapsdeklaration i den första egenskapsgruppen.

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

    Om du anger UseCommonOutputDirectory till true meddelar Visual Studio och dess underliggande byggmotor (MSBuild) att du lägger flera projektutdata i samma mapp, och därför utelämnar MSBuild kopieringssteget som normalt inträffar när projekt är beroende av andra projekt.

  6. Upprepa steg 2–5 för alla projekt i lösningen. Du kan hoppa över vissa projekt om du har några exceptionella projekt som inte bör använda den gemensamma utdatakatalogen.

Tips

Om utdata inte genereras till den plats som du angav kontrollerar du att du skapar motsvarande konfiguration (till exempel Felsöka eller Release) genom att välja den på menyraden i Visual Studio.

Skärmbild av build-konfigurationsväljaren i Visual Studio 2022.

Ange den mellanliggande utdatakatalogen för ett projekt

Den här proceduren gäller för projekt i Visual Studio 2022 som riktar sig till .NET Core eller .NET 5 och senare.

  1. Rensa projektet för att ta bort alla befintliga utdatafiler.

  2. Öppna projektfilen.

  3. Lägg till följande egenskapsdeklaration i den första egenskapsgruppen.

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

    Sökvägen är relativ till projektfilen, eller så kan du använda en absolut sökväg. Om du vill placera projektnamnet i sökvägen kan du referera till det med hjälp av egenskaperna MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Fler egenskaper som du kan använda hittar du under MSBuilds reserverade och välkända egenskaper.

  4. Visual Studio skapar fortfarande mappen obj under projektmappen när du skapar den, men den är tom. Du kan ta bort den som en del av byggprocessen. Ett sätt att göra det är att lägga till en händelse efter bygget för att köra följande kommando:

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

    Se Specificera anpassade bygghändelser.

Använd Directory.Build.props för att ange utdatakatalogen

Om du har ett stort antal projekt och vill ändra utdatamappen för dem alla, skulle det vara tidskrävande och innebära risk för fel att ändra var och en med de metoder som beskrivs tidigare i den här artikeln. I sådana fall kan du skapa en fil i lösningsmappen, Directory.Build.props, för att ange lämpliga MSBuild-egenskaper på ett ställe för att gälla för alla projekt i lösningen. Genom att placera en fil med det här namnet i den överordnade mappen för alla projekt som du vill påverkas kan du enkelt underhålla anpassningar på en enda plats och göra det enkelt att ändra värdena. Se Anpassa kompileringen efter mapp.

Använda artefakter för att organisera byggutdata

För .NET 8-projekt kan du använda artefakterna för att ordna utdata på ett mycket anpassningsbart och flexibelt sätt. Se layouten Artifacts output.