.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/
: . Az összes buildkimenethez azonban választhat egy 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>.dll
helyett, 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.
A .NET telepítési keresési viselkedésének konfigurálása
A .NET 9-ben és újabb verzióiban konfigurálhatja a közzétett végrehajtható fájl .NET-telepítési keresési útvonalait a AppHostDotNetSearch
tulajdonságokon AppHostRelativeDotNet
keresztül.
AppHostDotNetSearch
lehetővé teszi egy vagy több hely megadását, ahol a végrehajtható fájl .NET-telepítést keres:
AppLocal
: az alkalmazás végrehajtható mappájaAppRelative
: a végrehajtható alkalmazás elérési útjaEnvironmentVariables
: környezetiDOTNET_ROOT[_<arch>]
változók értékeGlobal
: regisztrált és alapértelmezett globális telepítési helyek
AppHostRelativeDotNet
a futtathatóhoz viszonyított elérési utat adja meg, amely akkor lesz keresve, ha AppHostDotNetSearch
tartalmazza a fájlt AppRelative
.
További információ: AppHostDotNetSearch
az AppHostRelativeDotNet
apphost helybeállításai és telepítése.
Ö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.