dotnet build

Ez a cikk a következőre vonatkozik: ✔️ .NET Core 3.1 SDK és újabb verziók

Név

dotnet build - Létrehoz egy projektet és annak minden függőségét.

Szinopszis

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

Leírás

A dotnet build parancs bináris fájlok készletébe építi a projektet és annak függőségeit. A bináris fájlok tartalmazzák a projekt kódját köztes nyelvű (IL) fájlokban, .dll kiterjesztéssel. A projekt típusától és beállításaitól függően más fájlok is lehetnek, például:

  • Az alkalmazás futtatásához használható végrehajtható fájl, ha a projekt típusa végrehajtható cél a .NET Core 3.0-s vagy újabb verziójával.
  • A .pdb kiterjesztéssel végzett hibakereséshez használt szimbólumfájlok.
  • Egy .deps.json fájl, amely felsorolja az alkalmazás vagy tár függőségeit.
  • Egy .runtimeconfig.json fájl, amely meghatározza az alkalmazás megosztott futtatókörnyezetét és verzióját.
  • Egyéb kódtárak, amelyektől a projekt függ (projekthivatkozásokon vagy NuGet-csomaghivatkozásokon keresztül).

A .NET Core 3.0-nál korábbi verziókat célzó végrehajtható projektek esetében a NuGet-kódtár-függőségek általában NEM lesznek átmásolva a kimeneti mappába. A rendszer futásidőben feloldja őket a NuGet globális csomagok mappájából. Ezt szem előtt tartva a termék dotnet build nem áll készen arra, hogy átkerüljön egy másik gépre a futtatáshoz. Az alkalmazás üzembe helyezhető verziójának létrehozásához közzé kell tennie azt (például a dotnet publish paranccsal). További információ: .NET-alkalmazástelepítés.

A .NET Core 3.0-s és újabb verzióit célzó végrehajtható projektek esetében a program a kódtárfüggőségeket a kimeneti mappába másolja. Ez azt jelenti, hogy ha nincs más közzétételspecifikus logika (például webes projektek), a build kimenetének üzembe helyezhetőnek kell lennie.

Implicit visszaállítás

Az építéshez szükség van a project.assets.json fájlra, amely felsorolja az alkalmazás függőségeit. A fájl a végrehajtáskor dotnet restore jön létre. Az eszköz nem tudja feloldani a referencia-szerelvényeket az eszközkészletek nélkül, ami hibákhoz vezet.

Nem kell futtatnia dotnet restore , mert implicit módon fut minden olyan parancs, amely visszaállítást igényel, például dotnet new, dotnet build, dotnet run, dotnet test, dotnet publishés dotnet pack. Az implicit visszaállítás letiltásához használja a --no-restore lehetőséget.

A dotnet restore parancs továbbra is hasznos bizonyos esetekben, amikor a explicit visszaállításnak van értelme, például folyamatos integrációs buildek az Azure DevOps Servicesben vagy olyan buildrendszerekben, amelyeknek explicit módon kell szabályozni a visszaállítást.

A NuGet-hírcsatornák kezelésével kapcsolatos információkért tekintse meg a dokumentációtdotnet restore.

Ez a parancs támogatja a dotnet restore hosszú formában átadott beállításokat (például --source). A rövid űrlapbeállítások, például -sa rövid űrlapok nem támogatottak.

Végrehajtható vagy kódtár kimenete

Azt, hogy a projekt végrehajtható-e, a projektfájl tulajdonsága határozza-e meg <OutputType> . Az alábbi példa egy végrehajtható kódot előállító projektet mutat be:

<PropertyGroup>
  <OutputType>Exe</OutputType>
</PropertyGroup>

Tár létrehozásához hagyja ki a <OutputType> tulajdonságot, vagy módosítsa az értékét a következőre Library: . A kódtár IL DLL-je nem tartalmaz belépési pontokat, és nem hajtható végre.

Msbuild

dotnet build az MSBuild használatával hozza létre a projektet, így támogatja a párhuzamos és növekményes buildeket is. További információ: Növekményes buildek.

A parancs a beállításain kívül elfogadja az dotnet build MSBuild beállításait is, például -p a tulajdonságok beállítását vagy -l egy naplózó definiálásához. Ezekről a lehetőségekről az MSBuild parancssori referenciában talál további információt. Vagy használhatja a dotnet msbuild parancsot is.

Feljegyzés

Ha dotnet build a rendszer automatikusan futtatja dotnet run, az olyan argumentumokat, mint a -property:property=value nem tiszteletben tartjuk.

A futtatás dotnet build egyenértékű a futtatással dotnet msbuild -restore, azonban a kimenet alapértelmezett részletessége eltérő.

Számítási feladatjegyzék letöltése

A parancs futtatásakor a rendszer elindítja a számítási feladatok hirdetési jegyzékeinek aszinkron háttérletöltését. Ha a letöltés a parancs befejeződésekor is fut, a letöltés leáll. További információ: Hirdetési jegyzékek.

Argumentumok

PROJECT | SOLUTION

A létrehozandó projekt- vagy megoldásfájl. Ha nincs megadva projekt- vagy megoldásfájl, az MSBuild az aktuális munkakönyvtárban keres egy olyan fájlt, amelynek fájlkiterjesztése proj vagy sln végződésű, és ezt a fájlt használja.

Beállítások

  • -a|--arch <ARCHITECTURE>

    A célarchitektúra megadása. Ez egy rövidített szintaxis a futtatókörnyezet azonosítójának (RID) beállításához, ahol a megadott érték az alapértelmezett RID-vel van kombinálva. Egy gépen például win-x64 a RID beállítása a következőre win-x86van adva--arch x86: . Ha ezt a lehetőséget használja, ne használja a -r|--runtime beállítást. Elérhető a .NET 6 7. előzetes verziója óta.

  • --artifacts-path <ARTIFACTS_DIR>

    A végrehajtott parancs összes buildkimeneti fájlja a megadott elérési út alatti almappákba kerül, projekt szerint elválasztva. További információ: Artifacts Output Layout. A .NET 8 SDK óta érhető el.

  • -c|--configuration <CONFIGURATION>

    Meghatározza a buildkonfigurációt. A legtöbb projekt esetében az Debugalapértelmezett beállítás, de felülbírálhatja a projekt buildkonfigurációs beállításait.

  • --disable-build-servers

    Kényszeríti a parancsot az állandó buildkiszolgálók figyelmen kívül hagyására. Ez a beállítás konzisztens módot biztosít a buildek gyorsítótárazásának letiltására, ami az alapoktól kényszeríti a buildeket. A gyorsítótárakra nem támaszkodó buildek akkor hasznosak, ha a gyorsítótárak valamilyen okból sérültek vagy helytelenek. A .NET 7 SDK óta érhető el.

  • -f|--framework <FRAMEWORK>

    Egy adott keretrendszer fordítása. A keretrendszert a projektfájlban kell meghatározni. Példák: net7.0, net462.

  • --force

    Minden függőséget feloldani kell, még akkor is, ha az utolsó visszaállítás sikeres volt. A jelölő megadása megegyezik a project.assets.json fájl törlésével.

  • -?|-h|--help

    A parancs használatának leírását nyomtatja ki.

  • --interactive

    Lehetővé teszi, hogy a parancs leálljon, és várja meg a felhasználói bemenetet vagy műveletet. Például a hitelesítés befejezéséhez. A .NET Core 3.0 SDK óta érhető el.

  • --no-dependencies

    Figyelmen kívül hagyja a projekt–projekt (P2P) hivatkozásokat, és csak a megadott gyökérprojektet hozza létre.

  • --no-incremental

    A buildet nem biztonságosként jelöli meg a növekményes build esetében. Ez a jelző kikapcsolja a növekményes fordítást, és a projekt függőségi gráfjának tiszta újraépítését kényszeríti ki.

  • --no-restore

    Nem hajt végre implicit visszaállítást a buildelés során.

  • --nologo

    Nem jelenik meg az indítási szalagcím vagy a szerzői jogi üzenet.

  • --no-self-contained

    Az alkalmazást keretrendszerfüggő alkalmazásként teszi közzé. Az alkalmazás futtatásához telepíteni kell egy kompatibilis .NET-futtatókörnyezetet a célgépre. A .NET 6 SDK óta érhető el.

  • -o|--output <OUTPUT_DIRECTORY>

    A beépített bináris fájlok elhelyezésére szolgáló könyvtár. Ha nincs megadva, az alapértelmezett elérési út a következő ./bin/<configuration>/<framework>/. Több cél-keretrendszerrel rendelkező projektek esetén (a tulajdonságon keresztül) ezt a TargetFrameworks beállítást is meg kell határoznia --framework .

    • .NET 7.0.200 SDK és újabb verziók

      Ha ezt a --output parancsot egy megoldáson futtatja, a parancssori felület figyelmeztetést küld (7.0.200-ban hiba) a kimeneti útvonal nem egyértelmű szemantikája miatt. A --output beállítás nem engedélyezett, mert az összes beépített projekt kimenete a megadott könyvtárba lesz másolva, amely nem kompatibilis a több célzott projekttel, valamint a közvetlen és tranzitív függőségek különböző verzióival rendelkező projektekkel. További információ: A megoldásszintű --output beállítás már nem érvényes a buildel kapcsolatos parancsokra.

  • --os <OS>

    A cél operációs rendszer (OS) megadása. Ez egy rövidített szintaxis a futtatókörnyezet azonosítójának (RID) beállításához, ahol a megadott érték az alapértelmezett RID-vel van kombinálva. Egy gépen például win-x64 a RID beállítása a következőre linux-x64van adva--os linux: . Ha ezt a lehetőséget használja, ne használja a -r|--runtime beállítást. A .NET 6 óta érhető el.

  • -p|--property:<PROPERTYNAME>=<VALUE>

    Beállít egy vagy több MSBuild tulajdonságot. Adjon meg több tulajdonságot pontosvesszővel vagy a beállítás ismétlésével:

    --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    
  • -r|--runtime <RUNTIME_IDENTIFIER>

    Megadja a cél futtatókörnyezetet. A futtatókörnyezet-azonosítók (RID-k) listáját a RID-katalógusban találja. Ha ezt a lehetőséget a .NET 6 SDK-val használja, használja --self-contained vagy --no-self-contained használja is. Ha nincs megadva, az alapértelmezett beállítás az aktuális operációs rendszer és architektúra buildelése.

  • --self-contained [true|false]

    Közzéteszi a .NET-futtatókörnyezetet az alkalmazással, hogy a futtatókörnyezetet ne kelljen telepíteni a célgépre. Az alapértelmezett beállítás, true ha a futtatókörnyezet azonosítója meg van adva. A .NET 6 óta érhető el.

  • --source <SOURCE>

    A Visszaállítási művelet során használni kívánt NuGet-csomagforrás URI-ja.

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

    Megadja, hogy a terminálnaplózót kell-e használni a buildkimenethez. Az alapértelmezett érték az auto, amely először ellenőrzi a környezetet a terminálnaplózás engedélyezése előtt. A környezet ellenőrzi, hogy a terminál képes-e modern kimeneti funkciókat használni, és nem használ átirányított szabványos kimenetet az új naplózó engedélyezése előtt. on kihagyja a környezetellenőrzést, és engedélyezi a terminálnaplózást. off kihagyja a környezetellenőrzést, és az alapértelmezett konzolnaplózót használja.

    A terminálnaplózó megjeleníti a visszaállítási fázist, majd a buildelési fázist. Az egyes fázisok során az éppen épülő projektek a terminál alján jelennek meg. Az épület összes projektje az MSBuild-célt és a célra fordított időt is kimeneteli. Ebben az információban további információt talál a buildről. Amikor egy projekt befejeződött, egyetlen "befejezett build" szakasz lesz megírva, amely rögzíti a következőt:

    • Az épített projekt neve.
    • A cél-keretrendszer (ha több-célzott).
    • A build állapota.
    • A build elsődleges kimenete (amely hivatkozásra van hivatkozva).
    • A projekthez létrehozott diagnosztikák.

    Ez a beállítás a .NET 8-tól érhető el.

  • -v|--verbosity <LEVEL>

    A parancs részletességi szintjét állítja be. Az engedélyezett értékek a következőkq[uiet]: , m[inimal], n[ormal]d[etailed]és diag[nostic]. Az alapértelmezett érték minimal. Alapértelmezés szerint az MSBuild minden részletességi szinten figyelmeztetéseket és hibákat jelenít meg. A figyelmeztetések kizárásához használja /property:WarningLevel=0a következőt: . További információkért lásd LoggerVerbosity és a WarningLevelet.

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

    Beállítja a RuntimeIdentifier platformot hordozhatóra RuntimeIdentifier az egyik gépe alapján. Ez implicit módon történik olyan tulajdonságok esetében, amelyekhez RuntimeIdentifierpéldául SelfContained, PublishAot, , PublishSelfContainedPublishSingleFileés PublishReadyToRun. Ha a tulajdonság értéke hamis, az implicit feloldás már nem fog bekövetkezni.

  • --version-suffix <VERSION_SUFFIX>

    Beállítja a $(VersionSuffix) projekt létrehozásakor használni kívánt tulajdonság értékét. Ez csak akkor működik, ha a $(Version) tulajdonság nincs beállítva. $(Version) Ezután a kötőjellel elválasztott kötőjellel $(VersionSuffix)kombinált értékre van állítva$(VersionPrefix).

Példák

  • Projekt létrehozása és függőségei:

    dotnet build
    
  • Projekt és függőségeinek létrehozása a kiadási konfigurációval:

    dotnet build --configuration Release
    
  • Projekt és függőségeinek létrehozása egy adott futtatókörnyezethez (ebben a példában: Linux):

    dotnet build --runtime linux-x64
    
  • Hozza létre a projektet, és használja a megadott NuGet-csomagforrást a visszaállítási művelet során:

    dotnet build --source c:\packages\mypackages
    
  • Hozza létre a projektet, és állítsa be az 1.2.3.4-es verziót buildparaméterként az -pMSBuild beállítással:

    dotnet build -p:Version=1.2.3.4