Přehled publikování aplikací .NET

Aplikace, které vytvoříte pomocí rozhraní .NET, můžete publikovat ve dvou různých režimech a režim ovlivňuje způsob, jakým uživatel spouští vaši aplikaci.

Publikování aplikace jako samostatného aplikace vytvoří aplikaci, která zahrnuje modul runtime a knihovny .NET a vaši aplikaci a její závislosti. Uživatelé aplikace ji mohou spustit na počítači, ve kterém není nainstalován modul .NET Runtime.

Publikování aplikace jako závislé na rozhraní vytvoří aplikaci, která obsahuje pouze vlastní aplikaci a její závislosti. Uživatelé aplikace musí samostatně nainstalovat modul runtime .NET.

Oba režimy publikování vytvoří ve výchozím nastavení spustitelný soubor specifický pro platformu. Aplikace závislé na rozhraních se dají vytvořit bez spustitelného souboru a tyto aplikace jsou pro různé platformy.

Když je vytvořen spustitelný soubor, můžete zadat cílovou platformu s identifikátorem modulu runtime (RID). Další informace o identifikátorů RID najdete v článku katalog identifikátorů .NET RID.

Následující tabulka popisuje příkazy, které slouží k publikování aplikace jako závislé nebo samostatné, na verzi sady SDK:

Typ SDK 2.1 SADA SDK 3,1 SADA SDK 5,0 SADA SDK 6,0 Příkaz
spustitelný soubor závislý na rozhraní pro aktuální platformu. ✔️ ✔️ ✔️ dotnet publish
spustitelný soubor závislý na rozhraní pro konkrétní platformu. ✔️ ✔️ ✔️ dotnet publish -r <RID> --self-contained false
binární soubor pro více platforem závislý na rozhraní. ✔️ ✔️ ✔️ ✔️ dotnet publish
samostatně obsažený spustitelný soubor. ✔️ ✔️ ✔️ ✔️ dotnet publish -r <RID>

Další informace naleznete v tématu .net dotnet Publish Command.

Získání spustitelného souboru

Spustitelné soubory nejsou pro různé platformy. Jsou specifické pro operační systém a architekturu procesoru. Při publikování aplikace a vytvoření spustitelného souboru můžete aplikaci publikovat jako samostatně nebo jako závislé na rozhraní. Publikování aplikace jako samostatné zahrnuje modul runtime .NET s aplikací a uživatelé aplikace se nemusí starat o instalaci .NET před spuštěním aplikace. Aplikace publikované jako závislé na rozhraní neobsahují modul runtime a knihovny .NET. jsou zahrnuté jenom závislosti aplikace a třetí strany.

Následující příkazy vyprodukuje spustitelný soubor:

Typ SDK 2.1 SADA SDK 3,1 SADA SDK 5,0 SADA SDK 6,0 Příkaz
spustitelný soubor závislý na rozhraní pro aktuální platformu. ✔️ ✔️ ✔️ dotnet publish
spustitelný soubor závislý na rozhraní pro konkrétní platformu. ✔️ ✔️ ✔️ dotnet publish -r <RID> --self-contained false
samostatně obsažený spustitelný soubor. ✔️ ✔️ ✔️ ✔️ dotnet publish -r <RID>

Vytvoření binárního souboru pro různé platformy

Binární soubory pro různé platformy se vytvářejí při publikování aplikace jako závislé na rozhraní, ve formě souboru DLL . Soubor DLL se jmenuje po vašem projektu. Například pokud máte aplikaci s názvem word_reader, vytvoří se soubor s názvem word_reader.dll . Aplikace publikované tímto způsobem jsou spouštěny s dotnet <filename.dll> příkazem a lze je spustit na libovolné platformě.

Binární soubory pro různé platformy je možné spouštět v jakémkoli operačním systému, pokud je již cílový modul .NET Runtime nainstalován. Pokud cílový modul runtime .NET není nainstalovaný, může se aplikace spustit s novějším modulem runtime, pokud je aplikace nakonfigurovaná tak, aby se předalo. Další informace najdete v tématu předejte vám aplikace závislé na rozhraní.

Následující příkaz vytvoří binární soubor pro různé platformy:

Typ SDK 2.1 Sada SDK 3. x SADA SDK 5,0 SADA SDK 6,0 Příkaz
binární soubor pro více platforem závislý na rozhraní. ✔️ ✔️ ✔️ ✔️ dotnet publish

Publikování závislé na rozhraní

Aplikace publikované jako rozhraní závislé na platformě jsou mezi platformami a neobsahují modul runtime .NET. K instalaci modulu runtime .NET je nutný uživatel vaší aplikace.

Publikování aplikace jako závislého na rozhraní vytvoří binární soubor pro různé platformy jako soubor DLL a spustitelný soubor specifický pro platformu , který cílí na aktuální platformu. Knihovna DLL je více než platforma, zatímco spustitelný soubor není. pokud například publikujete aplikaci s názvem word_reader a cílovou Windows, vytvoří se word_reader.exe spustitelný soubor spolu s word_reader.dll. Při cílení na Linux nebo macOS se vytvoří spustitelný soubor word_reader společně s word_reader.dll. Další informace o identifikátorů RID najdete v článku katalog identifikátorů .NET RID.

Důležité

Sada .NET SDK 2,1 nevytváří spustitelné soubory specifické pro platformu při publikování závislého na rozhraní aplikace.

Binární soubor pro více platforem aplikace můžete spustit pomocí dotnet <filename.dll> příkazu a můžete ho spustit na libovolné platformě. pokud aplikace používá balíček NuGet, který má implementace specifické pro platformu, zkopírují se všechny závislosti platforem do složky publikování společně s aplikací.

Pro konkrétní platformu můžete vytvořit spustitelný soubor předáním -r <RID> --self-contained false parametrů dotnet publish příkazu. Když parametr -r vyhodíte, vytvoří se spustitelný soubor pro vaši aktuální platformu. Všechny NuGet, které mají závislosti specifické pro platformu pro cílovou platformu, se zkopírují do složky publish. Pokud nepotřebujete spustitelný soubor specifický pro platformu, můžete ho zadat <UseAppHost>False</UseAppHost> v souboru projektu. Další informace najdete v tématu MSBuild referenčních informací pro projekty .NET SDK.

Výhody

  • Malé nasazení
    Distribuují se pouze aplikace a její závislosti. Modul runtime a knihovny .NET instaluje uživatel a všechny aplikace sdílejí modul runtime.

  • Různé platformy
    Vaše aplikace a všechny . Knihovna založená na rozhraní NET běží v jiných operačních systémech. Pro svou aplikaci nemusíte definovat cílovou platformu. Informace o formátu souboru .NET najdete v tématu Formát souboru sestavení .NET.

  • Používá nejnovější opravený modul runtime.
    Aplikace používá nejnovější modul runtime (v rámci cílené skupiny major-minor platformy .NET) nainstalované v cílovém systému. To znamená, že vaše aplikace automaticky používá nejnovější opravenou verzi modulu runtime .NET. Toto výchozí chování lze přepsat. Další informace najdete v tématu o aplikacích závislých na rozhraní.

Nevýhody

  • Vyžaduje předinstalační modul runtime.
    Aplikace se může spustit jenom v případě, že je v hostitelském systému už nainstalovaná verze .NET, na které jsou cíle aplikace nainstalované. Chování aplikace při přeposílání můžete nakonfigurovat tak, aby vyžadovalo určitou verzi rozhraní .NET nebo povolování novější verze rozhraní .NET. Další informace najdete v tématu o aplikacích závislých na rozhraní.

  • .NET se může změnit
    Modul runtime a knihovny .NET je možné aktualizovat na počítači, na kterém je aplikace spuštěná. Ve výjimečných případech to může změnit chování aplikace, pokud používáte knihovny .NET, což dělají většina aplikací. Můžete nakonfigurovat, jak vaše aplikace používá novější verze rozhraní .NET. Další informace najdete v tématu o aplikacích závislých na rozhraní.

Následující nevýhoda se vztahuje pouze na sadu .NET Core 2.1 SDK.

  • Použití příkazu dotnet ke spuštění aplikace
    Aby uživatelé aplikaci spouštěi dotnet <filename.dll> , musí spustit příkaz . Sada .NET Core 2.1 SDK nevytváří spustitelné soubory specifické pro platformu pro aplikace publikované na rozhraní.

Příklady

Publikování aplikace závislé na platformě Společně se souborem DLL se vytvoří spustitelný soubor, který cílí na vaši aktuální platformu.

dotnet publish

Publikování aplikace závislé na platformě Společně se souborem DLL se vytvoří 64bitový spustitelný soubor s Linuxem. Tento příkaz nefunguje s .NET Core SDK 2.1.

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

Samostatné publikování

Publikování aplikace jako samostatného vytvoří spustitelný soubor specifický pro platformu. Výstupní složka pro publikování obsahuje všechny komponenty aplikace, včetně knihoven .NET a cílového modulu runtime. Aplikace je izolovaná od ostatních aplikací .NET a nevyu používá místně nainstalovaný sdílený modul runtime. Ke stažení a instalaci .NET se nevyžaduje uživatel vaší aplikace.

Spustitelný binární soubor je vytvořen pro zadanou cílovou platformu. Pokud máte například aplikaci s názvem word_reader a publikujete samostatný spustitelný soubor pro Windows, vytvoří se word_reader.exe souboru. Publikování pro Linux nebo macOS se word_reader soubor. Cílová platforma a architektura se zadá pomocí parametru -r <RID> pro dotnet publish příkaz . Další informace o identifikátorech RID najdete v tématu Katalog identifikátorů RID .NET.

Pokud má aplikace závislosti specifické pro platformu, například balíček NuGet obsahující závislosti specifické pro platformu, zkopírují se společně s aplikací do složky pro publikování.

Výhody

  • Řízení verze .NET
    Můžete řídit, která verze .NET se nasadí s vaší aplikací.

  • Cílení na konkrétní platformu
    Vzhledem k tomu, že aplikaci musíte publikovat pro každou platformu, víte, kde bude aplikace spuštěna. Pokud .NET zavádí novou platformu, uživatelé nebudou moci vaši aplikaci na této platformě spouštět, dokud nevydáte verzi cílení na tuto platformu. Než uživatelé spustí aplikaci na nové platformě, můžete aplikaci otestovat z důvodu problémů s kompatibilitou.

Nevýhody

  • Větší nasazení
    Vzhledem k tomu, že vaše aplikace zahrnuje modul runtime .NET a všechny závislosti vaší aplikace, je velikost stahování a požadované místo na pevném disku větší než verze závislá na rozhraní .

    Tip

    Velikost nasazení v systémech Linux můžete snížit přibližně o 28 MB pomocí invariantního režimu globalizace rozhraní .NET. Tím se aplikace vynutí, aby se se všemi jazykovou verzí zachází jako s invariantní jazykovou verzí.

    Tip

    Ořezávání IL může dále zmenšit velikost vašeho nasazení.

  • Obtížnější aktualizace verze .NET
    Modul runtime .NET (distribuovaný s vaší aplikací) je možné upgradovat pouze vydáním nové verze aplikace. .NET ale podle potřeby aktualizuje důležité opravy zabezpečení pro knihovnu architektury na počítači, na které běží vaše aplikace. Zodpovídáte za koncové ověřování tohoto scénáře oprav zabezpečení.

Příklady

Publikujte aplikaci samostatně. Vytvoří se 64bitový spustitelný soubor macOS.

dotnet publish -r osx-x64

Publikujte aplikaci samostatně. Vytvoří Windows 64bitového spustitelného souboru.

dotnet publish -r win-x64

Publikování s imagemi ReadyToRun

Publikování pomocí imagí ReadyToRun zlepší dobu spuštění aplikace za cenu zvětšení velikosti aplikace. Pokud chcete publikovat pomocí ReadyToRun, další podrobnosti najdete v tématu ReadyToRun .

Výhody

  • Vylepšený čas spuštění
    Aplikace stráví méně času spouštěním JIT.

Nevýhody

  • Větší velikost
    Aplikace bude větší na disku.

Příklady

Publikování samostatné aplikace a ReadyToRun Vytvoří se 64bitový spustitelný soubor macOS.

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

Publikování samostatné aplikace a ReadyToRun Vytvoří Windows 64bitového spustitelného souboru.

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

Viz také