Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel is van toepassing op: ✔️ .NET 6 SDK en latere versies
Naam
dotnet build - Hiermee bouwt u een project-, oplossings- of bestandgebaseerde app en alle bijbehorende afhankelijkheden.
Samenvatting
dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>] [-bl|--binaryLogger:<FILE>]
[-c|--configuration <CONFIGURATION>] [--disable-build-servers]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
[--no-self-contained] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
[-p|--property:<PROPERTYNAME>=<VALUE>] [-r|--runtime <RUNTIME_IDENTIFIER>]
[--sc|--self-contained] [--source <SOURCE>]
[--tl:[auto|on|off]] [ --ucr|--use-current-runtime]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
Beschrijving
Met dotnet build de opdracht wordt de project-, oplossings- of bestands-app en de bijbehorende afhankelijkheden gebouwd in een set binaire bestanden. De binaire bestanden bevatten de code van het project in IL-bestanden (Intermediate Language) met een .dll-extensie . Afhankelijk van het projecttype en de instellingen kunnen andere bestanden worden opgenomen, zoals:
- Een uitvoerbaar bestand dat kan worden gebruikt om de toepassing uit te voeren.
- Symboolbestanden die worden gebruikt voor foutopsporing met de extensie .pdb .
- Een .deps.json-bestand , waarin de afhankelijkheden van de toepassing of bibliotheek worden vermeld.
- Een .runtimeconfig.json-bestand , waarmee de gedeelde runtime en de bijbehorende versie voor een toepassing worden opgegeven.
- Andere bibliotheken waarvoor het project afhankelijk is (via projectverwijzingen of NuGet-pakketverwijzingen).
Voor uitvoerbare projecten die gericht zijn op .NET Core 3.0 en hoger, worden bibliotheekafhankelijkheden gekopieerd naar de uitvoermap. Dit betekent dat als er geen andere publicatiespecifieke logica is (zoals webprojecten), de build-uitvoer kan worden geïmplementeerd.
Impliciete herstelbewerking
Voor het bouwen is het project.assets.json-bestand vereist, waarin de afhankelijkheden van uw toepassing worden vermeld. Het bestand wordt gemaakt wanneer dotnet restore het wordt uitgevoerd. Zonder het assetsbestand kan de tooling verwijzingsassembly's niet oplossen, wat resulteert in fouten.
U hoeft niet uit te voeren dotnet restore omdat deze impliciet wordt uitgevoerd door alle opdrachten waarvoor een herstelbewerking moet worden uitgevoerd, zoals dotnet new, dotnet build, , dotnet run, dotnet test, , en dotnet publish.dotnet pack Als u impliciete herstel wilt uitschakelen, gebruikt u de --no-restore optie.
De dotnet restore opdracht is nog steeds nuttig in bepaalde scenario's waarbij het expliciet herstellen zinvol is, zoals builds voor continue integratie in Azure DevOps Services of in buildsystemen die expliciet moeten worden beheerd wanneer de herstelbewerking plaatsvindt.
Zie de dotnet restore documentatie voor informatie over het beheren van NuGet-feeds.
Deze opdracht ondersteunt de dotnet restore opties die worden doorgegeven in het lange formulier (bijvoorbeeld --source). Korte formulieropties, zoals -s, worden niet ondersteund.
Uitvoer van uitvoerbare bestanden of bibliotheken
Of het project uitvoerbaar is of niet wordt bepaald door de <OutputType> eigenschap in het projectbestand. In het volgende voorbeeld ziet u een project dat uitvoerbare code produceert:
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
Als u een bibliotheek wilt produceren, laat u de eigenschap weg of wijzigt u de <OutputType> waarde ervan in Library. Het IL-DLL-bestand voor een bibliotheek bevat geen toegangspunten en kan niet worden uitgevoerd.
MSBuild
dotnet build gebruikt MSBuild om het project, de oplossing of de op bestanden gebaseerde app te bouwen. Het ondersteunt zowel parallelle als incrementele builds. Zie Incrementele builds voor meer informatie.
Naast de opties accepteert de dotnet build opdracht MSBuild-opties, zoals -p voor het instellen van eigenschappen of -l het definiëren van een logboekregistratie. Zie de MSBuild-opdrachtregelverwijzing voor meer informatie over deze opties. U kunt ook de dotnet msbuild-opdracht gebruiken.
Notitie
Wanneer dotnet build automatisch wordt uitgevoerd door dotnet run, worden argumenten zoals -property:property=value niet gerespecteerd.
Uitvoeren dotnet build is gelijk aan het uitvoeren dotnet msbuild -restore; de standaard uitgebreidheid van de uitvoer is echter anders.
Downloads van workloadmanifesten
Wanneer u deze opdracht uitvoert, wordt er een asynchrone achtergronddownload van reclamemanifesten voor workloads gestart. Als het downloaden nog steeds wordt uitgevoerd wanneer deze opdracht is voltooid, wordt het downloaden gestopt. Zie Reclamemanifesten voor meer informatie.
Argumenten
PROJECT | SOLUTION | FILE
Het project- of oplossings- of C#-bestand (op bestanden gebaseerde app) waarop moet worden gewerkt. Als er geen bestand is opgegeven, zoekt MSBuild in de huidige map naar een project of oplossing.
PROJECTis het pad en de bestandsnaam van een C#-, F#- of Visual Basic-projectbestand, of het pad naar een map die een C#-, F#- of Visual Basic-projectbestand bevat.SOLUTIONis het pad en de bestandsnaam van een oplossingsbestand (.sln of .slnx extensie) of het pad naar een map met een oplossingsbestand.FILEis een argument toegevoegd in .NET 10. Het pad en de bestandsnaam van een app op basis van bestanden. Apps op basis van bestanden bevinden zich in één bestand dat is gebouwd en uitgevoerd zonder een bijbehorend projectbestand (.csproj). Zie C#-apps bouwen op basis van bestanden voor meer informatie.
Opties
-
-a|--arch <ARCHITECTURE>Hiermee geeft u de doelarchitectuur. Dit is een verkorte syntaxis voor het instellen van de Runtime-id (RID), waarbij de opgegeven waarde wordt gecombineerd met de standaard-RID. Als u bijvoorbeeld op een
win-x64computer opgeeft--arch x86, wordt de RID ingesteld opwin-x86. Als u deze optie gebruikt, gebruikt u de-r|--runtimeoptie niet. Beschikbaar sinds .NET 6 Preview 7. -
--artifacts-path <ARTIFACTS_DIR>Alle builduitvoerbestanden van de uitgevoerde opdracht worden weergegeven in submappen onder het opgegeven pad, gescheiden door project. Zie De indeling Artefacten-uitvoer voor meer informatie. Beschikbaar sinds .NET 8 SDK.
-bl|--binaryLogger:<FILE>Hiermee schakelt u de binaire logboekregistratie in en geeft u desgewenst de naam van het uitvoerbestand op.
Als er geen bestandsnaam is opgegeven, bevindt de standaardwaarde zichmsbuild.binlogin de huidige map.Het binaire logboek bevat gedetailleerde build-informatie en kan worden geopend met de MSBuild Structured Log Viewer.
dotnet build -bl dotnet build -bl:build-log.binlog-
-c|--configuration <CONFIGURATION>Definieert de buildconfiguratie. De standaardinstelling voor de meeste projecten is
Debug, maar u kunt de buildconfiguratie-instellingen in uw project overschrijven. -
--disable-build-serversHiermee wordt de opdracht gedwongen om permanente buildservers te negeren. Deze optie biedt een consistente manier om al het gebruik van buildcaching uit te schakelen, waardoor een volledig nieuwe build wordt afgemaakt. Een build die niet afhankelijk is van caches is handig wanneer de caches om een of andere reden beschadigd of onjuist zijn. Beschikbaar sinds .NET 7 SDK.
-f|--framework <FRAMEWORK>Compileert voor een specifiek framework. Het framework moet worden gedefinieerd in het projectbestand. Voorbeelden:
net7.0,net462.--forceHiermee worden alle afhankelijkheden gedwongen om te worden opgelost, zelfs als de laatste herstelbewerking is geslaagd. Het opgeven van deze vlag is hetzelfde als het verwijderen van het project.assets.json bestand.
-
--interactiveHiermee kan de opdracht stoppen en wachten op invoer of actie van de gebruiker. Bijvoorbeeld om de verificatie te voltooien.
--no-dependenciesHiermee worden P2P-verwijzingen (project-to-project) genegeerd en wordt alleen het opgegeven hoofdproject gebouwd.
--no-incrementalMarkeert de build als onveilig voor incrementele build. Deze vlag schakelt incrementele compilatie uit en dwingt een schone herbouw van de afhankelijkheidsgrafiek van het project af.
--no-restoreVoert tijdens de build geen impliciete herstelbewerking uit.
--nologoDe opstartbanner of het copyrightbericht wordt niet weergegeven.
-
--no-self-containedPubliceer uw toepassing als een frameworkafhankelijke toepassing. Er moet een compatibele .NET-runtime worden geïnstalleerd op de doelcomputer om uw toepassing uit te voeren.
-o|--output <OUTPUT_DIRECTORY>Map waarin de ingebouwde binaire bestanden moeten worden geplaatst. Als dit niet is opgegeven, is
./bin/<configuration>/<framework>/het standaardpad . Voor projecten met meerdere doelframeworks (via deTargetFrameworkseigenschap) moet u ook definiëren--frameworkwanneer u deze optie opgeeft..NET 7.0.200 SDK en hoger
Als u de optie opgeeft bij het
--outputuitvoeren van deze opdracht op een oplossing, verzendt de CLI een waarschuwing (een fout in 7.0.200) vanwege de onduidelijke semantiek van het uitvoerpad. De--outputoptie is niet toegestaan omdat alle uitvoer van alle gemaakte projecten wordt gekopieerd naar de opgegeven map, die niet compatibel is met projecten met meerdere doelgroepen, evenals projecten met verschillende versies van directe en transitieve afhankelijkheden. Zie De optie Op oplossingsniveau--outputis niet meer geldig voor build-gerelateerde opdrachten voor meer informatie.
-
--os <OS>Hiermee geeft u het doelbesturingssysteem (OS). Dit is een verkorte syntaxis voor het instellen van de Runtime-id (RID), waarbij de opgegeven waarde wordt gecombineerd met de standaard-RID. Als u bijvoorbeeld op een
win-x64computer opgeeft--os linux, wordt de RID ingesteld oplinux-x64. Als u deze optie gebruikt, gebruikt u de-r|--runtimeoptie niet. Beschikbaar sinds .NET 6. -p|--property:<PROPERTYNAME>=<VALUE>Hiermee stelt u een of meer MSBuild-eigenschappen in. Geef meerdere eigenschappen op die zijn gescheiden door puntkomma's of door de optie te herhalen:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>-r|--runtime <RUNTIME_IDENTIFIER>Hiermee geeft u de doelruntime. Zie de RID-catalogus voor een lijst met runtime-id's (RID's). Als u deze optie gebruikt met .NET 6 SDK, gebruikt
--self-containedu of--no-self-containedook. Als dit niet is opgegeven, is de standaardinstelling om te bouwen voor het huidige besturingssysteem en de huidige architectuur.-
--sc|--self-containedPubliceer de .NET-runtime met uw toepassing, zodat de runtime niet hoeft te worden geïnstalleerd op de doelcomputer.
--source <SOURCE>De URI van de NuGet-pakketbron die moet worden gebruikt tijdens de herstelbewerking.
-
--tl:[auto|on|off]Hiermee geeft u op of Terminal Logger moet worden gebruikt voor de build-uitvoer. De standaardwaarde is
auto, waarmee eerst de omgeving wordt geverifieerd voordat u terminallogboekregistratie inschakelt. De omgevingscontrole controleert of de terminal in staat is moderne uitvoerfuncties te gebruiken en geen omgeleide standaarduitvoer gebruikt voordat de nieuwe logger wordt ingeschakeld.onslaat de omgevingscontrole over en schakelt terminallogboekregistratie in.offslaat de omgevingscontrole over en maakt gebruik van de standaardconsolelogger.Terminal Logger toont de herstelfase, gevolgd door de buildfase. Tijdens elke fase worden de huidige bouwprojecten onderaan de terminal weergegeven. Elk project dat wordt gebouwd, levert zowel het MSBuild-doel dat momenteel wordt gebouwd als de hoeveelheid tijd die aan dat doel is besteed. U kunt deze informatie doorzoeken voor meer informatie over de build. Wanneer een project klaar is met bouwen, wordt één sectie 'build completed' geschreven die het volgende vastlegt:
- De naam van het gebouwde project.
- Het doelframework (indien multi-targeted).
- De status van die build.
- De primaire uitvoer van die build (die is hyperlinked).
- Diagnostische gegevens die voor dat project worden gegenereerd.
Deze optie is beschikbaar vanaf .NET 8.
-
--ucr|--use-current-runtimeGebruik de huidige runtime als doelruntime.
-
-v|--verbosity <LEVEL>Hiermee stelt u het uitgebreidheidsniveau van de opdracht in. Toegestane waarden zijn
q[uiet], , ,m[inimal]enn[ormal]d[etailed]diag[nostic]. Zie LoggerVerbosity voor meer informatie. --version-suffix <VERSION_SUFFIX>Hiermee stelt u de waarde van de
$(VersionSuffix)eigenschap in die moet worden gebruikt bij het bouwen van het project. Dit werkt alleen als de$(Version)eigenschap niet is ingesteld.$(Version)Vervolgens wordt ingesteld op de$(VersionPrefix)combinatie met de$(VersionSuffix), gescheiden door een streepje.-
-?|-h|--helpHiermee wordt een beschrijving afgedrukt van het gebruik van de opdracht.
Voorbeelden
Bouw een project en de bijbehorende afhankelijkheden:
dotnet buildBouw een app op basis van bestanden:
dotnet build MyProject.csOndersteuning voor app op basis van bestanden is toegevoegd in .NET SDK 10.0.100.
Bouw een project en de bijbehorende afhankelijkheden met behulp van releaseconfiguratie:
dotnet build --configuration ReleaseBouw een project en de bijbehorende afhankelijkheden voor een specifieke runtime (in dit voorbeeld Linux):
dotnet build --runtime linux-x64Bouw het project en gebruik de opgegeven NuGet-pakketbron tijdens de herstelbewerking:
dotnet build --source c:\packages\mypackagesBouw het project en stel versie 1.2.3.4 in als buildparameter met behulp van de
-pMSBuild-optie:dotnet build -p:Version=1.2.3.4