A .NET-alkalmazások közzétételi áttekintése
A .NET-tel létrehozott alkalmazások két különböző módban tehetők közzé, és ez a mód hatással van arra, hogy a felhasználó hogyan futtatja az alkalmazást.
Ha az alkalmazását önállóként teszi közzé, akkor egy olyan alkalmazás jön létre, amely tartalmazza a .NET futtatókörnyezetet és a kódtárakat, valamint az alkalmazását és annak függőségeit. Az alkalmazás felhasználói olyan gépen futtathatják, amelyen nincs telepítve a .NET-futtatókörnyezet.
Az alkalmazás közzététele keretrendszerfüggő módon egy olyan alkalmazást hoz létre, amely csak magát az alkalmazást és annak függőségeit tartalmazza. Az alkalmazás felhasználóinak külön kell telepíteniük a .NET-futtatókörnyezetet.
Mindkét közzétételi mód alapértelmezés szerint egy platformspecifikus végrehajtható fájlt hoz létre. A keretrendszerfüggő alkalmazások végrehajthatók nélkül hozhatók létre, és ezek az alkalmazások platformfüggetlenek.
Végrehajtható fájl létrehozásakor megadhatja a célplatformot futtatókörnyezet-azonosítóval (RID). További információ a biztonsági azonosítókról: .NET RID-katalógus.
Az alábbi táblázat az alkalmazás keretrendszerfüggőként vagy önállóként való közzétételéhez használt parancsokat ismerteti:
Típus | Parancs |
---|---|
keretrendszerfüggő végrehajtható fájl a jelenlegi platformhoz. | dotnet publish |
keretrendszerfüggő végrehajtható egy adott platformhoz. | dotnet publish -r <RID> |
keretrendszerfüggő bináris. | dotnet publish |
önálló végrehajtható. | dotnet publish -r <RID> --self-contained |
További információ: .NET dotnet közzétételi parancs.
Végrehajtható fájl létrehozása
A végrehajtható elemek nem platformfüggetlenek, az operációs rendszerre és a CPU-architektúrára jellemzőek. Az alkalmazás közzétételekor és futtatható fájl készítésekor közzéteheti az alkalmazást akár önálló, akár keretfüggőmódon. Az alkalmazások önállóként való közzététele magában foglalja az alkalmazással való .NET-futtatókörnyezetet is, és az alkalmazás felhasználóinak nem kell aggódniuk a .NET telepítésével az alkalmazás futtatása előtt. Az alkalmazások keretrendszerfüggőként való közzététele nem tartalmazza a .NET-futtatókörnyezetet; csak az alkalmazás és a külső függőségek szerepelnek benne.
A következő parancsok létrehoznak egy végrehajtható parancsot:
Típus | Parancs |
---|---|
keretrendszerfüggő végrehajtható az aktuális platformhoz. | dotnet publish |
keretrendszerfüggő végrehajtható fájl egy adott platformhoz. | dotnet publish -r <RID> |
önálló végrehajtható fájl. | dotnet publish -r <RID> --self-contained |
Platformfüggetlen bináris fájl létrehozása
A platformfüggetlen bináris fájlok akkor jönnek létre, amikor keretrendszerfüggőteszi közzé az alkalmazást egy dll fájl formájában. A dll fájl neve a projektről van elnevezve. Ha például word_readernevű alkalmazással rendelkezik, létrejön egy word_reader.dll nevű fájl. Az ily módon közzétett alkalmazások a dotnet <filename.dll>
paranccsal futnak, és bármilyen platformon futtathatók.
A platformfüggetlen bináris fájlok bármilyen operációs rendszeren futtathatók, amíg a célként megadott .NET-futtatókörnyezet már telepítve van. Ha a megcélzott .NET-futtatókörnyezet nincs telepítve, előfordulhat, hogy az alkalmazás egy újabb futtatókörnyezet használatával fut, ha az alkalmazás az előregördítésre van konfigurálva. További információért lásd: keretrendszerfüggő alkalmazások továbbfejlesztése.
Az alkalmazást platformspecifikus végrehajthatóként vagy platformfüggetlen bináris fájlként is futtathatja dotnet
paranccsal. Nem lehet alkalmazásviselkedési különbség, amikor a platformspecifikus végrehajtható fájlt indítják, szemben a szokásos szerveralkalmazások dotnet
parancsaival. A platformspecifikus végrehajtható fájlon keresztüli indítás jobb integrációt biztosít a mögöttes operációs rendszerrel. Például:
- Az alkalmazás végrehajtható neve megjelenik a folyamatlistában, és nem
dotnet
, ami zavaró lehet, ha több is van. - A platform-specifikus végrehajtható fájlokat az operációs rendszer specifikus funkcióival szabhatja testre. Lásd például a Windowsosalapértelmezett veremméret konfigurálásáról szóló beszélgetést.
Az alábbi parancs egy platformfüggetlen bináris fájlt hoz létre:
Típus | Parancs |
---|---|
keretrendszerfüggő, platformfüggetlen bináris. | dotnet publish |
Keretrendszerfüggő közzététel
A keretrendszerfüggőként közzétett alkalmazások platformfüggetlenek, és nem tartalmazzák a .NET-futtatókörnyezetet. Az alkalmazás felhasználójának telepítenie kell a .NET-futtatókörnyezetet.
Az alkalmazás keretrendszerfüggő közzététele egy platformfüggetlen binárist hoz létre dll fájlként, és egy platformspecifikus végrehajtható állományt, amely az aktuális platformot célozza. A dll platformfüggetlen, míg a végrehajtható fájl nem. Ha például közzétesz egy word_reader nevű alkalmazást, és a Windows rendszert célozza meg, egy word_reader.exe végrehajtható fájl jön létre, valamint egy word_reader.dllis. Linux vagy macOS esetén létrejön egy word_reader végrehajtható fájl a(z) word_reader.dllmellett. Ha az alkalmazás platformspecifikus implementációkkal rendelkező NuGet-csomagot használ, a rendszer az összes platform függőségeit átmásolja a közzétételi\runtimes\{platform} mappába.
Az alkalmazás platformfüggetlen bináris fájlja a dotnet <filename.dll>
paranccsal futtatható, és bármely platformon futtatható.
Platformspecifikus és keretrendszerfüggő
A platform-specifikus keretrendszerfüggő alkalmazás közzétételéhez megadhatja a -r <RID>
paramétereket a dotnet publish
parancsnak. A közzététel így megegyezik a keretrendszerfüggő
Bár a létrehozott bináris fájl gyakorlatilag platformfüggetlen, egy adott platform megcélzásával az alkalmazás nem garantáltan platformfüggetlenül fut. Lefuttathatod a dotnet <filename.dll>
-t, de az alkalmazás összeomolhat, amikor megpróbál hozzáférni a hiányzó platformspecifikus függőségekhez.
További információért a RID-kről, lásd a .NET RID Katalógust.
Előnye
Kis méretű üzembe helyezés
Csak az alkalmazás és a függőségei kerülnek terjesztésre. A .NET-futtatókörnyezetet és a kódtárakat a felhasználó telepíti, és minden alkalmazás megosztja a futtatókörnyezetet.platformfüggetlen
Az alkalmazás és bármely . A NET-alapú kódtár más operációs rendszereken fut. Nem kell célplatformot definiálnia az alkalmazáshoz. A .NET-fájlformátumról további információt .NET-szerelvényfájlformátumcímű témakörben talál.A legújabb javított futtatókörnyezetet használja
Az alkalmazás a célrendszerre telepített legújabb futtatókörnyezetet (a .NET megcélzott fő-alcsaládján belül) használja. Ez azt jelenti, hogy az alkalmazás automatikusan a .NET-futtatókörnyezet legújabb javított verzióját használja. Ez az alapértelmezett viselkedés felülírható. További információ: keretrendszerfüggő alkalmazások tovább gördülése.
Hátrányai
A futtatókörnyezeti előzetes telepítését igényli
Az alkalmazás csak akkor futtatható, ha az általa megcélzott .NET-verzió már telepítve van a gazdarendszeren. Konfigurálhatja az alkalmazás roll-forward viselkedését úgy, hogy a .NET egy adott verzióját igényelje, vagy engedélyezze a .NET újabb verzióját. További információ: keretrendszerfüggő alkalmazások előre gördítése..NET változhat
A .NET-futtatókörnyezet és a kódtárak frissíthetők azon a gépen, amelyen az alkalmazás fut. Ritkán ez megváltoztathatja az alkalmazás viselkedését, ha a .NET-kódtárakat használja, amelyeket a legtöbb alkalmazás használ. Beállíthatja, hogy az alkalmazás hogyan használja a .NET újabb verzióit. További információ: keretrendszerfüggő alkalmazások előrefelé gördülnek.
Példák
Az alkalmazás közzététele többplatformos és keretfüggő módban. A rendszer létrehoz egy végrehajtható fájlt, amely az aktuális platformot célozza a dll fájllal együtt. Minden platformspecifikus függőség közzé lesz téve az alkalmazással.
dotnet publish
Alkalmazás közzététele platformspecifikusként és keretrendszerfüggőként. A rendszer létrehoz egy Linux 64 bites végrehajtható fájlt a dll fájllal együtt. Csak a célplatform függőségei jelennek meg az alkalmazással.
dotnet publish -r linux-x64
Önállóan közzétéve
Az alkalmazás önálló csomagként való közzététele platformspecifikus végrehajtható fájlt eredményez. A kimeneti közzétételi mappa az alkalmazás összes összetevőjét tartalmazza, beleértve a .NET-kódtárakat és a cél futtatókörnyezetet. Az alkalmazás el van különítve más .NET-alkalmazásoktól, és nem használ helyileg telepített megosztott futtatókörnyezetet. Az alkalmazás felhasználójának nem kell letöltenie és telepítenie a .NET-et.
Az önálló alkalmazásokat úgy teheti közzé, hogy átadja a --self-contained
paramétert a dotnet publish
parancsnak. A végrehajtható bináris fájl a megadott célplatformhoz lesz létrehozva. Ha például egy word_readernevű alkalmazással rendelkezik, és önálló végrehajtható fájlt tesz közzé Windows rendszerre, létrejön egy word_reader.exe fájl. Linux vagy macOS rendszeren való közzétételkor létrejön egy word_reader fájl. A célplatform és az architektúra a dotnet publish
parancs -r <RID>
paraméterével van megadva. További információért a futtatási azonosítókról, lásd a .NET RID-katalógust.
Ha az alkalmazás platformspecifikus függőségekkel rendelkezik, például egy platformspecifikus függőségeket tartalmazó NuGet-csomaggal, ezeket a rendszer az alkalmazással együtt a közzétételi mappába másolja.
Előnye
A .NET verzió vezérlése
Ön határozza meg, hogy a .NET melyik verziója legyen üzembe helyezve az alkalmazással.Platform-specifikus célzás
Mivel minden platformon közzé kell tennie az alkalmazást, tudja, hol fut az alkalmazás. Ha a .NET új platformot vezet be, a felhasználók addig nem futtathatják az alkalmazást ezen a platformon, amíg el nem bocsátanak egy, a platformot célzó verziót. Mielőtt a felhasználók az új platformon futtatják az alkalmazást, tesztelheti az alkalmazás kompatibilitási problémáit.
Hátrányai
Nagyobb telepítések
Mivel az alkalmazás tartalmazza a .NET-futtatókörnyezetet és az összes alkalmazásfüggőséget, a szükséges letöltési méret és merevlemez-terület nagyobb, mint egy keretrendszerfüggő-verzió.Borravaló
A Linux rendszereken való üzembe helyezés méretét körülbelül 28 MB-kal csökkentheti a .NET globalizációs invariáns módhasználatával. Ez arra kényszeríti az alkalmazást, hogy az összes kultúrát úgy kezelje, mint a invariáns kultúrát.
Borravaló
Az IL-vágás tovább csökkentheti az üzembe helyezés méretét.
Nehézséget okoz a .NET-verzió frissítése
A .NET-futtatókörnyezet (az alkalmazással együtt terjesztve) csak az alkalmazás új verziójának kiadásával frissíthető.
Példák
Az alkalmazás közzététele önálló csomagként. Létrejön egy 64 bites macOS futtatható fájl.
dotnet publish -r osx-x64 --self-contained
Önálló alkalmazás közzététele. Létrejön egy Windows 64 bites végrehajtható fájl.
dotnet publish -r win-x64 --self-contained
Közzététel ReadyToRun-rendszerképekkel
A ReadyToRun rendszerképekkel való közzététel javítja az alkalmazás indítási idejét az alkalmazás méretének növelésével. További információ: ReadyToRun.
Előnye
-
Továbbfejlesztett indítási idő
Az alkalmazás kevesebb időt tölt a JIT futtatásával.
Hátrányai
-
nagyobb méretű
Az alkalmazás nagyobb a lemezen.
Példák
Önálló és ReadyToRun alkalmazás közzététele. Létrejön egy macOS 64 bites végrehajtható fájl.
dotnet publish -c Release -r osx-x64 --self-contained -p:PublishReadyToRun=true
Egy önálló és ReadyToRun alkalmazás közzététele. Létrejön egy Windows 64 bites végrehajtható fájl.
dotnet publish -c Release -r win-x64 --self-contained -p:PublishReadyToRun=true