Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a cikk a következő verziókra vonatkozik: ✔️ .NET 6 SDK és újabb verziók
Név
dotnet publish – Közzéteszi az alkalmazást és függőségeit egy olyan mappában, amely üzembe helyez egy üzemeltetési rendszert.
Áttekintés
dotnet publish [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [--disable-build-servers]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
[--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
[--os <OS>] [-p|--property:<PROPERTYNAME>=<VALUE>]
[-r|--runtime <RUNTIME_IDENTIFIER>]
[--sc|--self-contained] [--no-self-contained]
[-s|--source <SOURCE>] [--tl:[auto|on|off]]
[--ucr|--use-current-runtime]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet publish -h|--help
Leírás
dotnet publish lefordítja az alkalmazást, beolvassa a projektfájlban megadott függőségeit, és közzéteszi az eredményként kapott fájlkészletet egy könyvtárban. A kimenet a következő eszközöket tartalmazza:
- Köztes nyelv (IL) kód egy dll kiterjesztéssel rendelkező szerelvényben.
- Egy .deps.json fájl, amely tartalmazza a projekt összes függőségét.
- Egy .runtimeconfig.json fájl, amely meghatározza az alkalmazás által várt megosztott futtatókörnyezetet, valamint a futtatókörnyezet egyéb konfigurációs beállításait (például szemétgyűjtés típusát).
- Az alkalmazás függőségei, amelyek a NuGet-gyorsítótárból a kimeneti mappába lesznek másolva.
A dotnet publish parancs kimenete készen áll egy üzemeltetési rendszerre (például kiszolgálóra, PC-re, Macre, laptopra) való üzembe helyezésre a végrehajtáshoz. Ez az egyetlen hivatalosan támogatott módja az alkalmazás központi telepítésre való előkészítésének. A projekt által megadott üzembe helyezés típusától függően előfordulhat, hogy az üzemeltetési rendszer telepítette a .NET megosztott futtatókörnyezetét. További információt a .NET-alkalmazások közzétételi áttekintésében talál.
Implicit visszaállítás
Nem kell futtatnia dotnet restore, mert az összes olyan parancs implicit módon fut, 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 buildeket az Azure DevOps Services vagy olyan buildrendszerekben, amelyeknek explicit módon kell szabályozni a visszaállítást.
További információ a NuGet-hírcsatornák kezeléséről: dotnet restore dokumentáció.
MSBuild
A dotnet publish parancs meghívja az MSBuild parancsot, amely meghívja a Publish célt. Ha a IsPublishable tulajdonság egy adott projekthez false, a Publish-cél nem hívható meg, és a dotnet publish parancs csak az implicit dotnet-visszaállítási futtatja a projekten.
A dotnet publish átadott paraméterek az MSBuildnek lesznek átadva. A -c és -o paraméterek az MSBuild Configuration és PublishDir tulajdonságaira vannak leképezve.
A dotnet publish parancs elfogadja az MSBuild beállításait, például -p a tulajdonságok beállításához, és -l a naplózó definiálásához. Beállíthatja például az MSBuild tulajdonságot a következő formátummal: -p:<NAME>=<VALUE>.
.pubxml-fájlok
A közzétételhez kapcsolódó tulajdonságokat egy .pubxml fájlra hivatkozva is beállíthatja. Például:
dotnet publish -p:PublishProfile=FolderProfile
Az előző példa a FolderProfile.pubxml fájlt használja, amely a <project_folder>/Properties/PublishProfiles mappában található. Ha egy elérési utat és fájlkiterjesztést ad meg a PublishProfile tulajdonság beállításakor, a rendszer figyelmen kívül hagyja őket. Az MSBuild alapértelmezés szerint a Properties/PublishProfiles mappában jelenik meg, és feltételezi a pubxml fájlkiterjesztést. A kiterjesztést is tartalmazó elérési út és fájlnév megadásához állítsa be a PublishProfileFullPath tulajdonságot a PublishProfile tulajdonság helyett.
A .pubxml fájlban:
-
PublishUrla Visual Studio a Közzétételi cél megjelölésére használja. -
PublishDira parancssori felület a közzétételi cél megjelölésére használja.
Ha azt szeretné, hogy a forgatókönyv minden helyen működjön, mindkét tulajdonságot inicializálhatja ugyanarra az értékre a .pubxml fájlban. Ha a GitHub dotnet/sdk#20931 megoldódott, csak az egyik tulajdonságot kell beállítani.
A .pubxml fájl egyes tulajdonságait csak a Visual Studio tartja tiszteletben, és nincs hatással a dotnet publish. Dolgozunk azon, hogy a parancssori felület jobban igazodjon a Visual Studio viselkedéséhez. A parancssori felület azonban soha nem használ bizonyos tulajdonságokat. A CLI és a Visual Studio egyaránt a közzététel csomagolási aspektusát hajtja végre, és dotnet/sdk#29817 további, ehhez kapcsolódó tulajdonságok támogatását tervezi. A parancssori felület azonban nem teszi lehetővé a közzététel üzembe helyezésének automatizálását, és az ahhoz kapcsolódó tulajdonságok nem támogatottak. A által nem támogatott dotnet publish tulajdonságok a következők, amelyek hatással vannak a buildre:
LastUsedBuildConfigurationConfigurationPlatformLastUsedPlatformTargetFrameworkTargetFrameworksRuntimeIdentifierRuntimeIdentifiers
MSBuild tulajdonságok
Az alábbi MSBuild tulajdonságok megváltoztatják a dotnet publishkimenetét.
PublishReadyToRunAz alkalmazásszerelvényeket ReadyToRun (R2R) formátumban fordítja le. Az R2R az idő előtti fordítás (AOT) egyik formája. További információ: ReadyToRun-rendszerképek.
Ha olyan hiányzó függőségekre vonatkozó figyelmeztetéseket szeretne látni, amelyek futásidejű hibákat okozhatnak, használja a
PublishReadyToRunShowWarnings=true.Javasoljuk, hogy ne a parancssorban, hanem egy közzétételi profilban adja meg a
PublishReadyToRun.PublishSingleFileAz alkalmazást egy platformspecifikus egyfájlos végrehajtható fájlba csomagolja. Az egyfájlos közzétételről további információt az egyfájlos csomagköteg-terveződokumentum. Ha ez a tulajdonság be van állítva
true, aPublishSelfContainedtulajdonság implicit módon a következőretruevan állítva: .Javasoljuk, hogy ezt a beállítást a projektfájlban adja meg a parancssor helyett.
PublishTrimmedLevágja a nem használt kódtárakat, hogy csökkentse az alkalmazások üzembe helyezésének méretét egy önálló végrehajtható fájl közzétételekor. További információ: Önálló telepítések és végrehajtható fájlok vágása. A .NET 6 SDK óta érhető el.
Javasoljuk, hogy ezt a beállítást a projektfájlban adja meg a parancssor helyett.
További információ:
- MSBuild parancssori referencia
- Visual Studio közzétételi profiljai (.pubxml) ASP.NET Core-alkalmazások üzembe helyezéséhez
- dotnet msbuild
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.
Érvek
PROJECT | SOLUTION | FILE
A projekt- vagy megoldás- vagy C# (fájlalapú alkalmazás) fájl, amelyen működni szeretne. Ha nincs megadva fájl, az MSBuild az aktuális könyvtárban keres egy projektet vagy megoldást.
PROJECTegy C#, F# vagy Visual Basic projektfájl elérési útja és fájlneve, vagy egy C#, F# vagy Visual Basic projektfájlt tartalmazó könyvtár elérési útja.SOLUTIONegy megoldásfájl elérési útja és fájlneve (.sln vagy .slnx kiterjesztés), vagy egy megoldásfájlt tartalmazó könyvtár elérési útja.FILEa .NET 10-ben hozzáadott argumentum. Egy fájlalapú alkalmazás elérési útja és fájlneve. A fájlalapú alkalmazások egyetlen fájlban találhatók, amelyek egy megfelelő projektfájl (.csproj) nélkül vannak létrehozva és futtatva. További információ: Fájlalapú C#-alkalmazások létrehozása.
Beállítások
-
-a|--arch <ARCHITECTURE>A célarchitektúra megadása. Ez a rövidített szintaxis a futtatókörnyezet-azonosító (RID)beállítására szolgál, ahol a megadott érték az alapértelmezett RID-vel van kombinálva. Egy
win-x64gépen például a--arch x86megadásával a RIDwin-x86lesz. Ha ezt a lehetőséget használja, ne használja a-r|--runtimelehetőséget. 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 Kimeneti elrendezés. A .NET 8 SDK óta érhető el.
-
-c|--configuration <CONFIGURATION>Meghatározza a buildkonfigurációt. Ha a .NET 8 SDK-val vagy egy újabb verzióval fejleszt, a parancs alapértelmezés szerint a
Releasekonfigurációt használja azokhoz a projektekhez, amelyeknek a TargetFramework beállításanet8.0vagy újabb verzióra van beállítva. Az alapértelmezett buildkonfigurációDebugaz SDK korábbi verzióihoz és a korábbi cél-keretrendszerekhez. Felülbírálhatja az alapértelmezett beállítást a projektbeállításokban vagy ezzel a beállítással. További információ: a "dotnet publish" kiadási konfigurációs és "dotnet pack" kiadási konfigurációshasznál. -
--disable-build-serversKé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>Közzéteszi az alkalmazást a megadott cél-keretrendszer. Meg kell adnia a cél keretrendszert a projektfájlban.
--forceMinden 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.
-
--interactiveLehető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.
--manifest <PATH_TO_MANIFEST_FILE>Egy vagy több céljegyzéket határoz meg, az alkalmazással közzétett csomagok levágásához. A jegyzékfájl a
dotnet storeparancskimenetének része. Több jegyzékfájl megadásához adjon hozzá egy--manifestbeállítást minden jegyzékfájlhoz.--no-buildNem hozza létre a projektet közzététel előtt. Implicit módon beállítja a
--no-restorejelzőt is.--no-dependenciesFigyelmen kívül hagyja a projektről projektre mutató hivatkozásokat, és csak a gyökérprojektet állítja vissza.
--nologoNem jelenik meg az indítási szalagcím vagy a szerzői jogi üzenet.
--no-restoreNem hajt végre implicit visszaállítást a parancs futtatásakor.
-o|--output <OUTPUT_DIRECTORY>Megadja a kimeneti könyvtár elérési útját.
Ha nincs megadva, alapértelmezés szerint a [project_file_folder]/bin/[configuration]/[framework]/publish/ keretrendszerfüggő végrehajtható és platformfüggetlen bináris fájlokhoz. Alapértelmezés szerint [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/ egy önálló végrehajtható fájlhoz.
Webes projektben, ha a kimeneti mappa a projektmappában található, az egymást követő
dotnet publishparancsok beágyazott kimeneti mappákat eredményeznek. Ha például a projektmappamyproject , és a közzétételi kimeneti mappa a myproject/publish, és kétszer futtatja a , a második futtatás a .config és.json fájlokat helyezimyproject/publish/publish . A közzétételi mappák beágyazásának elkerülése érdekében adjon meg egy olyan közzétételi mappát, amely nem közvetlenül a projektmappában, vagy zárja ki a közzétételi mappát a projektből. Az publishoutputnevű közzétételi mappa kizárásához adja hozzá a következő elemet aPropertyGroupfájl egyik eleméhez:<DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>.NET 7.0.200 SDK és újabb verziók
Ha a
--outputbeállítást adja meg, amikor ezt a 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--outputbeá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öbbcélú projektekkel, valamint a közvetlen és tranzitív függőségek különböző verzióival rendelkező projektekhez. További információ: Megoldásszintű--outputbeállítás már nem érvényes a buildel kapcsolatos parancsokra..NET Core 3.x SDK és újabb verziók
Ha egy projekt közzétételekor relatív elérési utat ad meg, a létrehozott kimeneti könyvtár az aktuális munkakönyvtárhoz képest van, nem pedig a projektfájl helyéhez.
Ha relatív elérési utat ad meg egy megoldás közzétételekor, az összes projekt kimenete a megadott mappába kerül az aktuális munkakönyvtárhoz képest. Ha közzé szeretné tenni a kimenetet, a
PublishDirbeállítás helyett az msbuild--outputtulajdonság használatával adjon meg egy relatív elérési utat az egyes projektekhez. Példáuldotnet publish -p:PublishDir=.\publishminden projekt közzétételi kimenetét a projektfájlt tartalmazó mappa alattipublishmappába küldi.
-
--os <OS>A cél operációs rendszer (OS) megadása. Ez a rövidített szintaxis a futtatókörnyezet-azonosító (RID)beállítására szolgál, ahol a megadott érték az alapértelmezett RID-vel van kombinálva. Egy
win-x64gépen például a--os linuxmegadásával a RIDlinux-x64lesz. Ha ezt a lehetőséget használja, ne használja a-r|--runtimelehetőséget. A .NET 6 óta érhető el. -
--sc|--self-containedTegye közzé a .NET-futtatókörnyezetet az alkalmazással, hogy a futtatókörnyezetet ne kelljen telepíteni a célgépre.
-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>-
--no-self-containedAz alkalmazás közzététele keretrendszerfüggő alkalmazásként. Az alkalmazás futtatásához telepíteni kell egy kompatibilis .NET-futtatókörnyezetet a célgépre.
--source <SOURCE>A Visszaállítási művelet során használni kívánt NuGet-csomagforrás URI-ja.
-r|--runtime <RUNTIME_IDENTIFIER>Közzéteszi az alkalmazást egy adott futtatókörnyezethez. A futtatókörnyezet-azonosítók (RID-k) listáját a RID-katalógusban. További információt a .NET-alkalmazások közzétételi áttekintésében talál. Ha ezt a lehetőséget használja, használja
--self-containedvagy--no-self-containedis.-
--tl:[auto|on|off]Megadja, hogy a terminálnaplózót használni kell-e a buildkimenethez. Az alapértelmezett érték a
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.onkihagyja a környezetellenőrzést, és engedélyezi a terminálnaplózást.offkihagyja 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.
-
--ucr|--use-current-runtimeHasználja az aktuális futtatókörnyezetet cél futtatókörnyezetként.
-
-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ék aminimal. További információ: LoggerVerbosity. --version-suffix <VERSION_SUFFIX>Meghatározza a verzió utótagját a projektfájl verzió mezőjében lévő csillag (
*) helyére.-
-?|-h|--helpA parancs használatának leírását nyomtatja ki.
Példák
Hozzon létre egy keretrendszerfüggő, platformfüggetlen bináris a projekthez az aktuális könyvtárban:
dotnet publishA .NET Core 3.0 SDK-tól kezdve ez a példa egy keretrendszerfüggő végrehajtható is létrehoz az aktuális platformhoz.
Hozzon létre egy önálló végrehajtható az aktuális könyvtárban lévő projekthez egy adott futtatókörnyezethez:
dotnet publish --runtime osx-x64A RID-nek a projektfájlban kell lennie.
Hozzon létre egy keretrendszerfüggő végrehajtható az aktuális könyvtárban lévő projekthez egy adott platformhoz:
dotnet publish --runtime osx-x64 --self-contained falseA RID-nek a projektfájlban kell lennie. Ez a példa a .NET Core 3.0 SDK és újabb verziókra vonatkozik.
Tegye közzé a projektet az aktuális könyvtárban egy adott futtatókörnyezethez és célkerethez:
dotnet publish --framework net8.0 --runtime osx-x64Tegye közzé a megadott projektfájlt:
dotnet publish ~/projects/app1/app1.csprojTegye közzé az aktuális alkalmazást, de ne állítsa vissza a projektről projektre (P2P) vonatkozó hivatkozásokat, csak a gyökérprojektet a visszaállítási művelet során:
dotnet publish --no-dependenciesTegye közzé a fájlalapú C# programot app.cs az aktuális könyvtárban:
dotnet publish app.csA fájlalapú programtámogatás a .NET SDK 10.0.100-ban lett hozzáadva.
Lásd még:
- .NET-alkalmazások közzétételi áttekintése
- Cél-keretrendszerek
- futtatókörnyezet-azonosító (RID) katalógus
- .NET-alkalmazás tárolóba helyezése dotnet közzétételi
- macOS Catalina Notarization
- közzétett alkalmazás címtárstruktúrája
- MSBuild parancssori referencia
- Visual Studio közzétételi profiljai (.pubxml) ASP.NET Core-alkalmazások üzembe helyezéséhez
- dotnet msbuild
- Önálló üzemelő példányok vágása