Publikování aplikací .NET pomocí .NET CLI
Tento článek ukazuje, jak publikovat aplikaci .NET z příkazového řádku. .NET poskytuje tři způsoby publikování aplikací. Nasazení závislé na rozhraní vytvoří multiplatformní .dll soubor, který používá místně nainstalovaný modul runtime .NET. Spustitelný soubor závislý na rozhraní vytvoří spustitelný soubor specifický pro platformu, který používá místně nainstalovaný modul runtime .NET. Samostatný spustitelný soubor vytvoří spustitelný soubor specifický pro platformu a obsahuje místní kopii modulu runtime .NET.
Přehled těchto režimů publikování najdete v tématu Nasazení aplikace .NET.
Hledáte rychlou nápovědu k používání rozhraní příkazového řádku? Následující tabulka uvádí několik příkladů, jak publikovat aplikaci. Cílovou architekturu můžete zadat pomocí parametru -f <TFM>
nebo úpravou souboru projektu. Další informace naleznete v tématu Základy publikování.
Režim publikování | Příkaz |
---|---|
Nasazení závislé na rozhraní | dotnet publish -c Release -p:UseAppHost=false |
Spustitelný soubor závislý na rozhraní | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
Samostatné nasazení | dotnet publish -c Release -r <RID> --self-contained true |
Poznámka:
- Parametr
-c Release
není povinný. Poskytuje se jako připomenutí k publikování buildu vydané verze vaší aplikace. - V sadě .NET SDK 3.1 nebo vyšší je spustitelný soubor závislý na rozhraní výchozí režim publikování při spuštění základního
dotnet publish
příkazu.
Základy publikování
Nastavení <TargetFramework>
souboru projektu určuje výchozí cílovou architekturu při publikování aplikace. Cílovou architekturu můžete změnit na libovolný platný moniker cílového rozhraní (TFM). Pokud například váš projekt používá <TargetFramework>net8.0</TargetFramework>
, vytvoří se binární soubor, který cílí na .NET 8. TFM zadaný v tomto nastavení je výchozím cílem používaný příkazem dotnet publish
.
Pokud chcete cílit na více než jednu architekturu, můžete nastavit <TargetFrameworks>
nastavení na více hodnot TFM oddělených středníkem. Při sestavování aplikace se vytvoří sestavení pro každou cílovou architekturu. Při publikování aplikace ale musíte zadat cílovou architekturu pomocí dotnet publish -f <TFM>
příkazu.
Výchozí režim BUILD-CONFIGURATION je Ladění , pokud se nezmění s parametrem -c
.
Výchozí výstupní adresář dotnet publish
příkazu je ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
. Například dotnet publish -c Release -f net8.0
publikuje do ./bin/Release/net8.0/publish/
. Můžete se ale přihlásit ke zjednodušené výstupní cestě a struktuře složek pro všechny výstupy sestavení. Další informace najdete v tématu Rozložení výstupu Artefakty.
Nativní závislosti
Pokud má vaše aplikace nativní závislosti, nemusí běžet v jiném operačním systému. Pokud vaše aplikace například používá nativní rozhraní API pro Windows, nespustí se v macOS nebo Linuxu. Pro každou platformu byste museli zadat kód specifický pro platformu a zkompilovat spustitelný soubor.
Zvažte také, jestli knihovna, na kterou jste odkazovali, má nativní závislost, nemusí vaše aplikace běžet na každé platformě. Je však možné, že balíček NuGet, na který odkazujete, obsahoval verze specifické pro platformu pro zpracování požadovaných nativních závislostí za vás.
Při distribuci aplikace s nativními závislostmi možná budete muset pomocí dotnet publish -r <RID>
přepínače určit cílovou platformu, pro kterou chcete publikovat. Seznam identifikátorů modulu runtime naleznete v katalogu identifikátorů modulu runtime (RID).
Další informace o binárníchsouborch
Ukázková aplikace
K prozkoumání příkazů publikování můžete použít následující aplikaci. Aplikace se vytvoří spuštěním následujících příkazů v terminálu:
mkdir apptest1
cd apptest1
dotnet new console
dotnet add package Figgle
Soubor Program.cs
nebo Program.vb
soubor vygenerovaný šablonou konzoly je potřeba změnit na následující:
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
Při spuštění aplikace (dotnet run
) se zobrazí následující výstup:
_ _ _ _ __ __ _ _ _
| | | | ___| | | ___ \ \ / /__ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Nasazení závislé na rozhraní
Když publikujete aplikaci jako FDD, <PROJECT-NAME>.dll
vytvoří se ve ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
složce soubor. Aplikaci spustíte tak, že přejdete do výstupní složky a použijete příkaz dotnet <PROJECT-NAME>.dll
.
Vaše aplikace je nakonfigurovaná tak, aby cílila na konkrétní verzi .NET. Tento cílový modul runtime .NET musí být na libovolném počítači, na kterém běží vaše aplikace. Pokud například vaše aplikace cílí na .NET Core 8, musí mít nainstalovaný modul runtime .NET Core 8. Jak je uvedeno v části Základy publikování, můžete upravit soubor projektu a změnit výchozí cílovou architekturu nebo cílit na více než jednu architekturu.
Publikování FDD vytvoří aplikaci, která automaticky přepojí nejnovější opravu zabezpečení .NET dostupnou v systému, na kterém je aplikace spuštěná. Další informace o vazbě verzí v době kompilace naleznete v tématu Výběr verze .NET verze, která se má použít.
Režim publikování | Příkaz |
---|---|
Nasazení závislé na rozhraní | dotnet publish -c Release -p:UseAppHost=false |
Spustitelný soubor závislý na rozhraní
Spustitelný soubor závislý na rozhraní (FDE) je výchozím režimem základního dotnet publish
příkazu. Nemusíte zadávat žádné další parametry, pokud chcete cílit na aktuální operační systém.
V tomto režimu se vytvoří spustitelný hostitel specifický pro platformu pro hostování vaší multiplatformní aplikace. Tento režim je podobný FDD, protože FDD vyžaduje hostitele ve formě dotnet
příkazu. Název souboru spustitelného souboru hostitele se liší na platformě a má podobný název jako <PROJECT-FILE>.exe
. Tento spustitelný soubor můžete spustit přímo místo volání dotnet <PROJECT-FILE>.dll
, což je stále přijatelný způsob, jak aplikaci spustit.
Vaše aplikace je nakonfigurovaná tak, aby cílila na konkrétní verzi .NET. Tento cílový modul runtime .NET musí být na libovolném počítači, na kterém běží vaše aplikace. Pokud například vaše aplikace cílí na .NET 8, musí mít nainstalovaný modul runtime .NET 8. Jak je uvedeno v části Základy publikování, můžete upravit soubor projektu a změnit výchozí cílovou architekturu nebo cílit na více než jednu architekturu.
Publikování FDE vytvoří aplikaci, která se automaticky přepojí na nejnovější opravu zabezpečení .NET dostupnou v systému, na kterém je aplikace spuštěná. Další informace o vazbě verzí v době kompilace naleznete v tématu Výběr verze .NET verze, která se má použít.
Režim publikování | Příkaz |
---|---|
Spustitelný soubor závislý na rozhraní | dotnet publish -c Release -r <RID> --self-contained false dotnet publish -c Release |
Při každém použití -r
přepínače se cesta výstupní složky změní na: ./bin/<BUILD-CONFIGURATION>/<TFM>/<RID>/publish/
Pokud používáte ukázkové aplikace, spusťte dotnet publish -f net6.0 -r win-x64 --self-contained false
příkaz . Tento příkaz vytvoří následující spustitelný soubor: ./bin/Debug/net6.0/win-x64/publish/apptest1.exe
Poznámka:
Celkovou velikost nasazení můžete zmenšit povolením invariantního režimu globalizace. Tento režim je užitečný pro aplikace, které nejsou globálně vědomi a které můžou používat konvence formátování, konvence dělení na písmena a porovnání řetězců a pořadí řazení invariantní jazykové verze. Další informace o invariantní režimu globalizace a jejím povolení naleznete v tématu Invariantní režim globalizace .NET.
Konfigurace chování vyhledávání při instalaci .NET
V .NET 9 a novějších verzích můžete nakonfigurovat instalační cesty .NET publikovaného spustitelného souboru prostřednictvím AppHostDotNetSearch
vlastností a AppHostRelativeDotNet
cest.
AppHostDotNetSearch
umožňuje zadat jedno nebo více umístění, kde spustitelný soubor vyhledá instalaci .NET:
AppLocal
: Složka spustitelného souboru aplikaceAppRelative
: cesta vzhledem ke spustitelnému souboru aplikaceEnvironmentVariables
: hodnota proměnnýchDOTNET_ROOT[_<arch>]
prostředíGlobal
: registrovaná a výchozí globální umístění instalace
AppHostRelativeDotNet
určuje cestu vzhledem ke spustitelnému souboru, který bude prohledána, pokud AppHostDotNetSearch
obsahuje AppRelative
.
Další informace naleznete v tématu AppHostDotNetSearch
a AppHostRelativeDotNet
možnosti instalace umístění v apphost.
Samostatné nasazení
Při publikování samostatného nasazení (SCD) vytvoří sada .NET SDK spustitelný soubor specifický pro platformu. Publikování SCD zahrnuje všechny požadované soubory .NET ke spuštění aplikace, ale nezahrnuje nativní závislosti .NET (například pro .NET 6 v Linuxu nebo .NET 8 v Linuxu). Tyto závislosti musí být přítomné v systému před spuštěním aplikace.
Publikování scD vytvoří aplikaci, která se nepřevádí na nejnovější dostupnou opravu zabezpečení .NET. Další informace o vazbě verzí v době kompilace naleznete v tématu Výběr verze .NET verze, která se má použít.
K publikování scD musíte použít následující přepínače dotnet publish
:
-r <RID>
Tento přepínač používá identifikátor (RID) k určení cílové platformy. Seznam identifikátorů modulu runtime naleznete v katalogu identifikátorů modulu runtime (RID).
--self-contained true
Tento přepínač říká sadě .NET SDK, aby vytvořil spustitelný soubor jako SCD.
Režim publikování | Příkaz |
---|---|
Samostatné nasazení | dotnet publish -c Release -r <RID> --self-contained true |
Tip
- V .NET 6 a novějších verzích můžete snížit celkovou velikost kompatibilních samostatných aplikací publikováním oříznutého. To umožňuje odstranění částí architektury a odkazovaných sestavení, které nejsou na žádné cestě kódu nebo potenciálně odkazované v reflexi modulu runtime. Podívejte se na nekompatibilitu oříznutí, abyste zjistili, jestli je pro vaši aplikaci vhodné oříznutí.
- Celkovou velikost nasazení můžete zmenšit povolením invariantního režimu globalizace. Tento režim je užitečný pro aplikace, které nejsou globálně vědomi a které můžou používat konvence formátování, konvence dělení na písmena a porovnání řetězců a pořadí řazení invariantní jazykové verze. Další informace o invariantní režimu globalizace a jejím povolení najdete v tématu Invariantní režim globalizace .NET Core.