A .NET-alkalmazások közzétételének á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 önállóan teszi közzé az alkalmazást, létrejön egy alkalmazás, amely tartalmazza a . NET-futtatókörnyezetet és a kódtárakat, valamint az alkalmazást é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.

Ha az alkalmazást keretrendszerfüggőként teszi közzé, 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 platformspecifikus végrehajtható fájlt hoz létre. A keretrendszertől függő alkalmazások végrehajtható fájlok 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 egy futtatókörnyezet-azonosítóval (RID). A fenntartott példányokról további információt a .NET RID-katalógusban talál.

Az alábbi táblázat az alkalmazás SDK-verziónkénti keretrendszer-függőként vagy önállóan történő közzétételéhez használt parancsokat ismerteti:

Típus SDK 2.1 SDK 3.1 SDK 5.0 SDK 6.0 Parancs
keretrendszertől függő végrehajtható fájl az aktuális platformhoz. ✔️ ✔️ ✔️ dotnet publish
keretrendszertől függő végrehajtható fájl egy adott platformon. ✔️ ✔️ ✔️ dotnet publish -r <RID> --self-contained false
keretrendszer-függő, platformfüggetlen bináris fájl. ✔️ ✔️ ✔️ ✔️ dotnet publish
önálló végrehajtható fájl. ✔️ ✔️ ✔️ ✔️ dotnet publish -r <RID>

További információ: .NET dotnet publish command.

Végrehajtható fájl létrehozása

A végrehajtható fájlok nem platformfüggetlenek. Ezek az operációs rendszerre és a CPU-architektúrára jellemzőek. Az alkalmazás közzétételekor és egy végrehajtható fájl létrehozásakor közzéteheti önállóan vagykeretrendszertől függőként. Az alkalmazás önállóként való közzététele magában foglalja az alkalmazással rendelkező .NET-futtatókörnyezetet, és az alkalmazás felhasználóinak nem kell aggódniuk a .NET telepítésével az alkalmazás futtatása előtt. A keretrendszer-függőként közzétett alkalmazások nem tartalmazzák a .NET-futtatókörnyezetet és a kódtárakat; csak az alkalmazás és a külső függőségek szerepelnek.

A következő parancsok létrehoznak egy végrehajtható fájlt:

Típus SDK 2.1 SDK 3.1 SDK 5.0 SDK 6.0 Parancs
keretrendszertől függő végrehajtható fájl az aktuális platformhoz. ✔️ ✔️ ✔️ dotnet publish
keretrendszertől függő végrehajtható fájl egy adott platformon. ✔️ ✔️ ✔️ dotnet publish -r <RID> --self-contained false
önálló végrehajtható fájl. ✔️ ✔️ ✔️ ✔️ dotnet publish -r <RID>

Platformfüggetlen bináris fájl létrehozása

A platformfüggetlen bináris fájlok akkor jönnek létre, amikor az alkalmazást keretrendszerfüggőként, DLL-fájl formájában teszi közzé. A DLL-fájl neve a projektről van elnevezve. Ha például word_reader nevű alkalmazással rendelkezik, létrejön egy word_reader.dll nevű fájl. Az így közzétett alkalmazások a dotnet <filename.dll> paranccsal futnak, és bármely platformon futtathatók.

A platformfüggetlen bináris fájlok bármilyen operációs rendszeren futtathatók, ha a célként megadott .NET-futtatókörnyezet már telepítve van. Ha a cé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 a továbbításra van konfigurálva. További információkért tekintse meg a keretrendszertől függő alkalmazások előretekeréséről szóló témakört.

A következő parancs platformfüggetlen bináris fájlt hoz létre:

Típus SDK 2.1 SDK 3.x SDK 5.0 SDK 6.0 Parancs
keretrendszer-függő, platformfüggetlen bináris fájl. ✔️ ✔️ ✔️ ✔️ dotnet publish

Keretrendszertől függő közzététel

A keretrendszer-fü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ások keretrendszerfüggőként való közzététele egy platformfüggetlenbináris fájlt hoz létre DLL-fájlként, és egy platformspecifikus végrehajtható fájlt, 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 cél Windows, aword_reader.dllmellett létrejön egy word_reader.exe végrehajtható fájl is. Linux vagy macOS rendszeren aword_reader.dllmellett egy word_reader végrehajtható fájl is létrejön . A fenntartott példányokról további információt a .NET RID-katalógusban talál.

Fontos

A .NET SDK 2.1 nem hoz létre platformspecifikus végrehajtható fájlokat az alkalmazás keretrendszerétől függő közzétételekor.

Az alkalmazás platformfüggetlen bináris fájlja futtatható a dotnet <filename.dll> paranccsal, és bármilyen platformon futtatható. Ha az alkalmazás platformspecifikus implementációkkal rendelkező NuGet-csomagot használ, a rendszer az alkalmazással együtt az összes platform függőségét a közzétételi mappába másolja.

Egy adott platformhoz végrehajtható fájlt úgy hozhat létre, hogy átadja a -r <RID> --self-contained false paramétereket a dotnet publish parancsnak. Ha a -r paraméter nincs megadva, a rendszer létrehoz egy végrehajtható fájlt az aktuális platformhoz. A megcélzott platform platformspecifikus függőségeit tartalmazó NuGet-csomagok a közzétételi mappába lesznek másolva. Ha nincs szüksége platformspecifikus végrehajtható fájlra, megadhatja <UseAppHost>False</UseAppHost> a projektfájlban. További információ: MSBuild reference for .NET SDK projects.

Előnyök

  • Kis méretű üzembe helyezés
    Csak az alkalmazás és annak függőségei vannak elosztva. 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 a .NET szerelvényfájlformátumában 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 használja (a megcélzott nagyobb-alverziós .NET-családon belül). 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ülbíráltatható. További információ: keretrendszerfüggő alkalmazások bevezetése.

Hátrányok

  • A futtatókörnyezet előzetes telepítését igényli
    Az alkalmazás csak akkor futtatható, ha az alkalmazáspéldányok .NET-verziója már telepítve van a gazdarendszerben. 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 bevezetése.

  • A .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. Ritka esetekben 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 bevezetése.

A következő hátrány csak a .NET Core 2.1 SDK-ra vonatkozik.

  • Az alkalmazás indítása a dotnet paranccsal
    A felhasználóknak futtatniuk kell a dotnet <filename.dll> parancsot az alkalmazás elindításához. A .NET Core 2.1 SDK nem készít platformspecifikus végrehajtható fájlokat a keretrendszertől függőként közzétett alkalmazásokhoz.

Példák

Platformfüggetlen alkalmazás közzététele keretrendszertől függően. Létrejön egy végrehajtható fájl, amely az aktuális platformot célozza a DLL-fájllal együtt.

dotnet publish

Platformfüggetlen alkalmazás közzététele keretrendszertől függően. A dll-fájllal együtt létrejön egy Linux 64 bites végrehajtható fájl. Ez a parancs nem működik a .NET Core SDK 2.1-ben.

dotnet publish -r linux-x64 --self-contained false

Önálló közzététel

Az alkalmazás önállóké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 a többi .NET-alkalmazástó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.

A végrehajtható bináris fájl a megadott célplatformhoz lesz létrehozva. Ha például word_reader nevű alkalmazással rendelkezik, és önkiszolgáló végrehajtható fájlt tesz közzé Windows számára, létrejön egy word_reader.exe fájl. Linux vagy macOS rendszeren történő közzétételkor létrejön egy word_reader fájl. A célplatform és az architektúra a parancs paraméterével -r <RID>dotnet publish van megadva. További információ a fenntartott példányokról: .NET RID-katalógus.

Ha az alkalmazás platformspecifikus függőségekkel rendelkezik, például platformspecifikus függőségeket tartalmazó NuGet-csomaggal, ezek az alkalmazással együtt a közzétételi mappába lesznek másolva.

Előnyök

  • .NET-verzió szabályozása
    Ön szabályozza, hogy a .NET melyik verziója legyen üzembe helyezve az alkalmazással.

  • Platformspecifikus célzás
    Mivel minden platformon közzé kell tennie az alkalmazást, tudja, hol fog futni 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 nem ad ki egy, a platformot célzó verziót. Tesztelheti az alkalmazást kompatibilitási problémák esetén, mielőtt a felhasználók az új platformon futtatják az alkalmazást.

Hátrányok

  • Nagyobb üzemelő példányok
    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 keretrendszertől függő verzió.

    Tipp

    A . NET-globalizáció invariáns móddal körülbelül 28 MB-tal csökkentheti a Linux rendszereken történő üzembe helyezés méretét. Ez arra kényszeríti az alkalmazást, hogy az összes kultúrát úgy kezelje, mint az invariáns kultúrát.

    Tipp

    Az IL-vágás tovább csökkentheti az üzembe helyezés méretét.

  • Nehezebb frissíteni a .NET-verziót
    A .NET-futtatókörnyezet (az alkalmazással együtt terjesztve) csak az alkalmazás új verziójának kiadásával frissíthető. A .NET azonban szükség szerint frissíti a kritikus biztonsági javításokat az alkalmazás által futtatott gépen lévő keretrendszertárhoz. Ön felelős a biztonsági javítások forgatókönyvének teljes körű ellenőrzéséért.

Példák

Alkalmazás közzététele önállóan. Létrejön egy macOS 64 bites végrehajtható fájl.

dotnet publish -r osx-x64

Alkalmazás közzététele önállóan. Létrejön egy Windows 64 bites végrehajtható fájl.

dotnet publish -r win-x64

Közzététel ReadyToRun-rendszerképekkel

A ReadyToRun rendszerképekkel való közzététel növeli az alkalmazás indítási idejét az alkalmazás méretének növelésével. A ReadyToRun használatával való közzétételhez további részletekért lásd: ReadyToRun .

Előnyök

  • Továbbfejlesztett indítási idő
    Az alkalmazás kevesebb időt tölt a JIT futtatásával.

Hátrányok

  • Nagyobb méret
    Az alkalmazás nagyobb lesz a lemezen.

Példák

Önálló alkalmazás és ReadyToRun közzététele. Létrejön egy macOS 64 bites végrehajtható fájl.

dotnet publish -c Release -r osx-x64 -p:PublishReadyToRun=true

Önálló alkalmazás és ReadyToRun közzététele. Létrejön egy Windows 64 bites végrehajtható fájl.

dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true

Lásd még