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 -s
a 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őrewin-x86
van 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
Debug
alapé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 aTargetFrameworks
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őrelinux-x64
van 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ők
q[uiet]
: ,m[inimal]
,n[ormal]
d[etailed]
ésdiag[nostic]
. Az alapértelmezett értékminimal
. 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=0
a 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óraRuntimeIdentifier
az egyik gépe alapján. Ez implicit módon történik olyan tulajdonságok esetében, amelyekhezRuntimeIdentifier
példáulSelfContained
,PublishAot
, ,PublishSelfContained
PublishSingleFile
ésPublishReadyToRun
. 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
-p
MSBuild beállítással:dotnet build -p:Version=1.2.3.4