Ä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
Rensa projektet eller lösningen för att ta bort befintliga utdatafiler (Skapa>Rensa lösning).
Om du vill öppna projektets egenskapssidor högerklickar du på projektnoden i Solution Explorer och väljer Egenskaper.
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.
I listrutan konfiguration högst upp väljer du den konfiguration vars utdatafil du vill ändra (Felsök, Releaseeller Alla konfigurationer).
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.
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.
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
Rensa lösningen för att ta bort befintliga utdatafiler (Bygg>Rensa lösning).
Klicka på ett projekt i lösningen.
På menyn Project klickar du på Egenskaper.
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.
Ö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
tilltrue
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.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)
Rensa projektet för att ta bort alla befintliga utdatafiler.
Öppna projektfilen.
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.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
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.
Rensa projektet eller lösningen för att ta bort befintliga utdatafiler (Bygg>Rensa lösning).
Högerklicka på projektnoden i Solution Explorer och välj Egenskaper.
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.
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#:
Visual Basic:
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.
Rensa lösningen för att ta bort befintliga utdatafiler (Bygg>Rensa lösning).
Klicka på ett projekt i lösningen.
På menyn Project klickar du på Egenskaper.
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.
Ö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
tilltrue
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.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.
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.
Rensa projektet för att ta bort alla befintliga utdatafiler.
Öppna projektfilen.
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.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
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.