dotnet-build

Dit artikel is van toepassing op: ✔️ .NET Core 3.1 SDK en latere versies

Naam

dotnet build - Bouwt een project en alle bijbehorende afhankelijkheden.

Samenvatting

dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
    [--artifacts-path <ARTIFACTS_DIR>]
    [-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
    [--disable-build-servers]
    [--force] [--interactive] [--no-dependencies] [--no-incremental]
    [--no-restore] [--nologo] [--no-self-contained] [--os <OS>]
    [-o|--output <OUTPUT_DIRECTORY>]
    [-p|--property:<PROPERTYNAME>=<VALUE>]
    [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--self-contained [true|false]] [--source <SOURCE>]
    [--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
    [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

dotnet build -h|--help

Beschrijving

Met de dotnet build opdracht worden het project 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, als het projecttype een uitvoerbaar bestand is dat gericht is op .NET Core 3.0 of hoger.
  • 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 zijn gericht op versies die ouder zijn dan .NET Core 3.0, worden bibliotheekafhankelijkheden van NuGet doorgaans NIET gekopieerd naar de uitvoermap. Ze worden tijdens runtime opgelost vanuit de map globale NuGet-pakketten. Met dat in gedachten is het product dotnet build van niet gereed om te worden overgedragen naar een andere machine om te worden uitgevoerd. Als u een versie van de toepassing wilt maken die kan worden geïmplementeerd, moet u deze publiceren (bijvoorbeeld met de opdracht dotnet publish ). Zie .NET-toepassingsimplementatie voor meer informatie.

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 te bouwen, zodat het zowel parallelle als incrementele builds ondersteunt. 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

Het project- of oplossingsbestand dat moet worden gebouwd. Als er geen project- of oplossingsbestand is opgegeven, zoekt MSBuild in de huidige werkmap naar een bestand met een bestandsextensie die eindigt op proj of sln en dat bestand gebruikt.

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-x64 computer opgeeft --arch x86 , wordt de RID ingesteld op win-x86. Als u deze optie gebruikt, gebruikt u de -r|--runtime optie 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.

  • -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-servers

    Hiermee 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.

  • --force

    Hiermee 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.

  • -?|-h|--help

    Hiermee wordt een beschrijving afgedrukt van het gebruik van de opdracht.

  • --interactive

    Hiermee kan de opdracht stoppen en wachten op invoer of actie van de gebruiker. Bijvoorbeeld om de verificatie te voltooien. Beschikbaar sinds .NET Core 3.0 SDK.

  • --no-dependencies

    Hiermee worden P2P-verwijzingen (project-to-project) genegeerd en wordt alleen het opgegeven hoofdproject gebouwd.

  • --no-incremental

    Markeert 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-restore

    Voert tijdens de build geen impliciete herstelbewerking uit.

  • --nologo

    De opstartbanner of het copyrightbericht wordt niet weergegeven.

  • --no-self-contained

    Hiermee publiceert u de toepassing als een frameworkafhankelijke toepassing. Er moet een compatibele .NET-runtime worden geïnstalleerd op de doelcomputer om de toepassing uit te voeren. Beschikbaar sinds .NET 6 SDK.

  • -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 de TargetFrameworks eigenschap) moet u ook definiëren --framework wanneer u deze optie opgeeft.

    • .NET 7.0.200 SDK en hoger

      Als u de optie opgeeft bij het --output uitvoeren 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 --output optie 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 --output is 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-x64 computer opgeeft --os linux , wordt de RID ingesteld op linux-x64. Als u deze optie gebruikt, gebruikt u de -r|--runtime optie 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-contained u of --no-self-contained ook. Als dit niet is opgegeven, is de standaardinstelling om te bouwen voor het huidige besturingssysteem en de huidige architectuur.

  • --self-contained [true|false]

    Hiermee publiceert u de .NET-runtime met de toepassing, zodat de runtime niet hoeft te worden geïnstalleerd op de doelcomputer. De standaardwaarde is true als er een runtime-id is opgegeven. Beschikbaar sinds .NET 6.

  • --source <SOURCE>

    De URI van de NuGet-pakketbron die moet worden gebruikt tijdens de herstelbewerking.

  • --tl:[auto|on|off]

    Hiermee geeft u op of de terminallogger 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. on slaat de omgevingscontrole over en schakelt terminallogboekregistratie in. off slaat de omgevingscontrole over en maakt gebruik van de standaardconsolelogger.

    De terminallogger toont u 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.

  • -v|--verbosity <LEVEL>

    Hiermee stelt u het uitgebreidheidsniveau van de opdracht in. Toegestane waarden zijnq[uiet], , , n[ormal]en diag[nostic]d[etailed]m[inimal]. De standaardwaarde is minimal. MsBuild geeft standaard waarschuwingen en fouten weer op alle uitgebreidheidsniveaus. Als u waarschuwingen wilt uitsluiten, gebruikt u /property:WarningLevel=0. Zie en WarningLevel voor meer informatieLoggerVerbosity.

  • --use-current-runtime, --ucr [true|false]

    Hiermee stelt u het RuntimeIdentifier in op een platform dat draagbaar RuntimeIdentifier is op basis van een van uw computer. Dit gebeurt impliciet met eigenschappen waarvoor een RuntimeIdentifier, zoals SelfContained, PublishAot, PublishSelfContained, , en PublishSingleFilePublishReadyToRun. Als de eigenschap is ingesteld op onwaar, vindt die impliciete resolutie niet meer plaats.

  • --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.

Voorbeelden

  • Bouw een project en de bijbehorende afhankelijkheden:

    dotnet build
    
  • Bouw een project en de bijbehorende afhankelijkheden met behulp van releaseconfiguratie:

    dotnet build --configuration Release
    
  • Bouw een project en de bijbehorende afhankelijkheden voor een specifieke runtime (in dit voorbeeld Linux):

    dotnet build --runtime linux-x64
    
  • Bouw het project en gebruik de opgegeven NuGet-pakketbron tijdens de herstelbewerking:

    dotnet build --source c:\packages\mypackages
    
  • Bouw 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