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 rozhodnout pro zjednodušenou výstupní cestu a strukturu 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 falsepří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.

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.

Viz také