.NET-alkalmazások közzététele a .NET parancssori felülettel

Ez a cikk bemutatja, hogyan teheti közzé a .NET-alkalmazást a parancssorból. A .NET három módszert kínál az alkalmazások közzétételére. A keretrendszerfüggő üzembe helyezés létrehoz egy platformfüggetlen .dll fájlt, amely a helyileg telepített .NET-futtatókörnyezetet használja. A keretrendszerfüggő végrehajtható fájl egy platformspecifikus végrehajtható fájlt hoz létre, amely a helyileg telepített .NET-futtatókörnyezetet használja. Az önálló végrehajtható fájl egy platformspecifikus végrehajtható fájlt hoz létre, amely tartalmazza a .NET-futtatókörnyezet helyi példányát.

A közzétételi módok áttekintését a .NET-alkalmazások üzembe helyezését ismertető cikkben tekintheti meg.

Gyors segítséget keres a parancssori felület használatához? Az alábbi táblázat néhány példát mutat be az alkalmazás közzétételére. Megadhatja a cél keretrendszert a -f <TFM> paraméterrel vagy a projektfájl szerkesztésével. További információ: A közzététel alapjai.

Közzétételi mód Parancs
Keretrendszerfüggő üzembe helyezés dotnet publish -c Release -p:UseAppHost=false
Keretrendszerfüggő végrehajtható dotnet publish -c Release -r <RID> --self-contained false
dotnet publish -c Release
Önálló üzembe helyezés dotnet publish -c Release -r <RID> --self-contained true

Feljegyzés

  • A -c Release paraméter nem szükséges. Emlékeztetőként szolgál az alkalmazás kiadási buildjének közzétételéhez.
  • A .NET SDK 3.1 vagy újabb verziójában a keretrendszertől függő végrehajtható mód az alapértelmezett közzétételi mód az alapszintű dotnet publish parancs futtatásakor.

A közzététel alapjai

A <TargetFramework> projektfájl beállítása határozza meg az alkalmazás közzétételekor az alapértelmezett cél keretrendszert. A cél keretrendszert bármely érvényes Target Framework Monikerre (TFM) módosíthatja. Ha például a projekt egy .NET 8-at célba jelölő bináris fájlt használ <TargetFramework>net8.0</TargetFramework>. Az ebben a beállításban megadott TFM a parancs által dotnet publish használt alapértelmezett cél.

Ha több keretrendszert szeretne megcélzni, a beállítást több TFM-értékre is beállíthatja <TargetFrameworks> pontosvesszővel elválasztva. Az alkalmazás létrehozásakor minden cél-keretrendszerhez létrejön egy build. Az alkalmazás közzétételekor azonban meg kell adnia a cél keretrendszert a dotnet publish -f <TFM> paranccsal.

Az alapértelmezett BUILD-CONFIGURATION mód a Hibakeresés , kivéve, ha a paraméter módosult -c .

A parancs alapértelmezett kimeneti könyvtára a dotnet publish következő ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/: . Közzéteheti például dotnet publish -c Release -f net8.0 a következőt ./bin/Release/net8.0/publish/: . Azonban az összes buildkimenethez választhat egyszerűsített kimeneti elérési utat és mappastruktúrát. További információ: Artifacts kimeneti elrendezés.

Natív függőségek

Ha az alkalmazás natív függőségekkel rendelkezik, előfordulhat, hogy nem egy másik operációs rendszeren fut. Ha például az alkalmazás a natív Windows API-t használja, az nem macOS vagy Linux rendszeren fog futni. Platformspecifikus kódot kell megadnia, és minden platformhoz le kell állítania egy végrehajtható kódot.

Fontolja meg azt is, hogy ha egy hivatkozott kódtár natív függőséget mutat, előfordulhat, hogy az alkalmazás nem minden platformon fut. Lehetséges azonban, hogy egy hivatkozott NuGet-csomag platformspecifikus verziókat tartalmaz a szükséges natív függőségek kezeléséhez.

Natív függőségekkel rendelkező alkalmazások terjesztésekor előfordulhat, hogy a dotnet publish -r <RID> kapcsolóval meg kell adnia a közzétenni kívánt célplatformot. A futtatókörnyezet-azonosítók listájáért tekintse meg a futtatókörnyezet-azonosítókat (RID) tartalmazó katalógust.

A platformspecifikus bináris fájlokról további információt a keretrendszertől függő végrehajtható és önálló üzembe helyezési szakaszokban talál.

Mintaalkalmazás

Az alábbi alkalmazással megismerheti a közzétételi parancsokat. Az alkalmazás a terminálon a következő parancsok futtatásával jön létre:

mkdir apptest1
cd apptest1
dotnet new console
dotnet add package Figgle

A Program.cs konzolsablon által létrehozott vagy Program.vb létrehozott fájlt a következőre kell módosítani:

using System;

namespace apptest1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"));
        }
    }
}
Module Program
    Sub Main(args As String())
        Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"))
    End Sub
End Module

Az alkalmazás futtatásakor (dotnet run) a következő kimenet jelenik meg:

  _   _      _ _         __        __         _     _ _
 | | | | ___| | | ___    \ \      / /__  _ __| | __| | |
 | |_| |/ _ \ | |/ _ \    \ \ /\ / / _ \| '__| |/ _` | |
 |  _  |  __/ | | (_) |    \ V  V / (_) | |  | | (_| |_|
 |_| |_|\___|_|_|\___( )    \_/\_/ \___/|_|  |_|\__,_(_)
                     |/

Keretrendszerfüggő üzembe helyezés

Amikor FDD-ként teszi közzé az alkalmazást, létrejön egy <PROJECT-NAME>.dll fájl a ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/ mappában. Az alkalmazás futtatásához keresse meg a kimeneti mappát, és használja a dotnet <PROJECT-NAME>.dll parancsot.

Az alkalmazás a .NET egy adott verziójára van konfigurálva. A célzott .NET-futtatókörnyezetnek minden olyan gépen kell lennie, amelyen az alkalmazás fut. Ha például az alkalmazás a .NET Core 8-at célozza meg, minden olyan gépen, amelyen az alkalmazás fut, telepítve kell lennie a .NET Core 8 futtatókörnyezetnek. A Közzététel alapjai szakaszban leírtaknak megfelelően szerkesztheti a projektfájlt az alapértelmezett cél keretrendszer módosításához vagy egynél több keretrendszer megcélzásához.

Az FDD közzététele olyan alkalmazást hoz létre, amely automatikusan a legújabb .NET biztonsági javításra irányítja át az alkalmazást futtató rendszeren. A fordítási időpontban történő verziókötésről további információt a használandó .NET-verzió kiválasztása című témakörben talál.

Közzétételi mód Parancs
Keretrendszerfüggő üzembe helyezés dotnet publish -c Release -p:UseAppHost=false

Keretrendszerfüggő végrehajtható

A keretrendszertől függő végrehajtható (FDE) az alapszintű dotnet publish parancs alapértelmezett módja. Nem kell más paramétereket megadnia, amíg meg szeretné célozni az aktuális operációs rendszert.

Ebben a módban egy platformspecifikus végrehajtható gazdagép jön létre a platformfüggetlen alkalmazás üzemeltetéséhez. Ez a mód hasonló az FDD-hez, mivel az FDD parancs formájában igényel gazdagépet dotnet . A gazdagép végrehajtható fájlneve platformonként eltérő, és a neve hasonló <PROJECT-FILE>.exe. Ezt a végrehajtható fájlt közvetlenül futtathatja hívás dotnet <PROJECT-FILE>.dllhelyett, ami továbbra is elfogadható módszer az alkalmazás futtatására.

Az alkalmazás a .NET egy adott verziójára van konfigurálva. A célzott .NET-futtatókörnyezetnek minden olyan gépen kell lennie, amelyen az alkalmazás fut. Ha például az alkalmazás a .NET 8-at célozza meg, az alkalmazás által futtatott számítógépeken telepítve kell lennie a .NET 8 futtatókörnyezetnek. A Közzététel alapjai szakaszban leírtaknak megfelelően szerkesztheti a projektfájlt az alapértelmezett cél keretrendszer módosításához vagy egynél több keretrendszer megcélzásához.

Az FDE közzétételekor létrejön egy alkalmazás, amely automatikusan áttér az alkalmazást futtató rendszeren elérhető legújabb .NET biztonsági javításra. A fordítási időpontban történő verziókötésről további információt a használandó .NET-verzió kiválasztása című témakörben talál.

Közzétételi mód Parancs
Keretrendszerfüggő végrehajtható dotnet publish -c Release -r <RID> --self-contained false
dotnet publish -c Release

Amikor a kapcsolót -r használja, a kimeneti mappa elérési útja a következőre változik: ./bin/<BUILD-CONFIGURATION>/<TFM>/<RID>/publish/

Ha a példaalkalmazást használja, futtassa a parancsotdotnet publish -f net6.0 -r win-x64 --self-contained false. Ez a parancs a következő végrehajtható fájlt hozza létre: ./bin/Debug/net6.0/win-x64/publish/apptest1.exe

Feljegyzés

A globalizálás invariáns módjának engedélyezésével csökkentheti az üzembe helyezés teljes méretét. Ez a mód olyan alkalmazások esetében hasznos, amelyek nincsenek globálisan tisztában, és használhatják a formázási konvenciók, a casing konvenciók, valamint az invariáns kultúra sztring-összehasonlítását és rendezési sorrendjét. A globalizáció invariáns módjáról és engedélyezéséről további információt a .NET Globalization Invariant Mode című témakörben talál.

Önálló üzembe helyezés

Önálló üzembe helyezés (SCD) közzétételekor a .NET SDK létrehoz egy platformspecifikus végrehajtható fájlt. Az SCD közzététele tartalmazza az alkalmazás futtatásához szükséges összes .NET-fájlt, de nem tartalmazza a .NET natív függőségeit (például Linuxon a .NET 6-ot vagy a Linuxon futó .NET 8-at). Ezeknek a függőségeknek az alkalmazás futtatása előtt jelen kell lenniük a rendszeren.

Az SCD közzététele olyan alkalmazást hoz létre, amely nem lép előre a legújabb elérhető .NET biztonsági javításra. A fordítási időpontban történő verziókötésről további információt a használandó .NET-verzió kiválasztása című témakörben talál.

SCD közzétételéhez a következő kapcsolókat kell használnia a dotnet publish paranccsal:

  • -r <RID>

    Ez a kapcsoló egy azonosítót (RID) használ a célplatform megadásához. A futtatókörnyezet-azonosítók listájáért tekintse meg a futtatókörnyezet-azonosítókat (RID) tartalmazó katalógust.

  • --self-contained true

    Ez a kapcsoló arra utasítja a .NET SDK-t, hogy hozzon létre egy végrehajtható fájlt SCD-ként.

Közzétételi mód Parancs
Önálló üzembe helyezés dotnet publish -c Release -r <RID> --self-contained true

Tipp.

  • A .NET 6-os és újabb verzióiban csökkentheti a kompatibilis önálló alkalmazások teljes méretét a levágott közzétételsel. Ez lehetővé teszi a vágó számára, hogy eltávolítsa a keretrendszer olyan részeit és hivatkozott szerelvényeket, amelyek nem szerepelnek semmilyen kódútvonalon, vagy amelyek esetleg futásidejű tükröződésben hivatkoznak rá. Tekintse meg a vágási inkompatibilitásokat annak megállapításához, hogy a vágásnak van-e értelme az alkalmazás számára.
  • A globalizálás invariáns módjának engedélyezésével csökkentheti az üzembe helyezés teljes méretét. Ez a mód olyan alkalmazások esetében hasznos, amelyek nincsenek globálisan tisztában, és használhatják a formázási konvenciók, a casing konvenciók, valamint az invariáns kultúra sztring-összehasonlítását és rendezési sorrendjét. A globalizáció invariáns módjáról és engedélyezéséről további információt a .NET Core Globalization Invariant Mode című témakörben talál.

Lásd még