Sdílet prostřednictvím


Přehled publikování aplikací .NET

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

Publikování vaší aplikace jako samostatnou vytvoří aplikaci, která zahrnuje modul runtime a knihovny .NET, vaši aplikaci a její závislosti. Uživatelé aplikace ji můžou spustit na počítači, na který není nainstalovaný modul runtime .NET.

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

Oba režimy publikování standardně vytvářejí spustitelný soubor specifický pro platformu. Aplikace závislé na rozhraní je možné vytvářet bez spustitelného souboru a tyto aplikace jsou multiplatformní.

Při vytváření spustitelného souboru můžete určit cílovou platformu s identifikátorem modulu runtime (RID). Další informace o identifikátorech RID najdete v tématu katalog identifikátorů RID rozhraní .NET.

Následující tabulka popisuje příkazy použité k publikování aplikace jako závislé na rozhraní nebo samostatně obsažené:

Typ Příkaz
spustitelný soubor závislý na frameworku pro aktuální platformu. dotnet publish
spustitelný soubor závislý na frameworku pro konkrétní platformu. dotnet publish -r <RID>
binárnízávislé na rozhraní . dotnet publish
samostatný spustitelný soubor. dotnet publish -r <RID> --self-contained

Další informace najdete v tématuo příkazu .NET dotnet publish.

Vytvoření spustitelného souboru

Spustitelné soubory nejsou multiplatformní, jsou specifické pro architekturu operačního systému a procesoru. Při publikování aplikace a vytvoření spustitelného souboru můžete aplikaci publikovat jako samostatná nebo závislá na frameworku. 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. Publikování aplikace závislé na platformě nezahrnuje modul runtime .NET; zahrnuje pouze samotnou aplikaci a její závislosti třetích stran.

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

Typ Příkaz
spustitelný soubor závislý na frameworku pro aktuální platformu. dotnet publish
spustitelný soubor závislý na prostředí pro konkrétní platformu. dotnet publish -r <RID>
samostatný spustitelný. dotnet publish -r <RID> --self-contained

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

Binární soubory pro různé platformy se vytvoří při publikování aplikace jako závislé na rozhraní, ve formě souboru dll. Soubor dll je pojmenován po projektu. Pokud máte například aplikaci s názvem word_reader, vytvoří se soubor s názvem word_reader.dll. Aplikace publikované tímto způsobem se spouštějí pomocí příkazu dotnet <filename.dll> a dají se spouštět 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 už je nainstalovaný cílový modul runtime .NET. Pokud cílový runtime systému .NET není nainstalovaný, může aplikace použít novější runtime, pokud je nakonfigurována tak, aby se mohla posunout vpřed. Další informace najdete v tématu aplikací závislých na architektuře.

Aplikaci můžete spustit jako spustitelný soubor specifický pro platformu nebo jako binární soubor pro různé platformy prostřednictvím příkazu dotnet. Nesmí být žádný rozdíl v chování aplikace při spouštění platformově specifického spustitelného souboru a příkazu dotnet pro běžné serverové aplikace. Spouštění prostřednictvím platformově specifického spustitelného souboru vám nabízí lepší integraci se základním operačním systémem. Například:

  • V seznamu procesů uvidíte název spustitelného souboru aplikace, a ne dotnet, což může být matoucí, pokud existuje více než jeden.
  • Spustitelný soubor specifický pro platformu můžete přizpůsobit pomocí konkrétních funkcí operačního systému. Podívejte se například do této diskuze o konfiguraci výchozí velikosti zásobníku ve Windows.

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

Typ Příkaz
binární soubor závislý na frameworku a platformě. dotnet publish

Publikování závislé na frameworku

Aplikace publikované jako závislé na architektuře jsou multiplatformní a nezahrnují modul runtime .NET. Je nutné, aby uživatel vaší aplikace nainstaloval modul runtime .NET.

Publikování aplikace jako závislé na rozhraní vytvoří binární soubor pro různé platformy jako soubor dll a spustitelný soubor specifický pro platformu, který cílí na vaši aktuální platformu. dll je multiplatformní, i když spustitelný soubor není. Pokud například publikujete aplikaci s názvem word_reader a cílovou platformou Windows, je vytvořen spustitelný soubor word_reader.exe společně s word_reader.dll. Při cílení na Linux nebo macOS se vytvoří spustitelný soubor word_reader společně s word_reader.dll. Pokud aplikace používá balíček NuGet, který má implementace specifické pro platformu, závislosti pro všechny platformy se zkopírují do složky publish\runtimes\{platform}.

Binární soubor multiplatformní aplikace můžete spustit pomocí příkazu dotnet <filename.dll> a spustit ho na libovolné platformě.

Závislé na platformě a rámci

Můžete publikovat rámcově závislou aplikaci pro konkrétní platformu předáním parametrů -r <RID> do příkazu dotnet publish. Publikování je tímto způsobem stejné jako závislé na rozhraní pro publikování s výjimkou toho, že závislosti specifické pro platformu se zpracovávají jinak. Pokud aplikace používá balíček NuGet, který má implementace specifické pro platformu, zkopírují se pouze závislosti cílové platformy. Tyto závislosti jsou zkopírovány přímo do složky publikovat.

I když je technicky vytvořený binární soubor multiplatformní, cílením na konkrétní platformu není zaručeno, že vaše aplikace bude spouštět různé platformy. Můžete spustit dotnet <filename.dll>, ale aplikace se může zhroutit, když se pokusí přistupovat k závislostem specifickým pro platformu, které chybí.

Další informace o identifikátorech RID rozhraní .NET najdete v tématu katalogu identifikátorů RID .

Výhody

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

  • multiplatformní
    Vaše aplikace a jakákoli knihovna založená na .NET běží na jiných operačních systémech. Pro vaši aplikaci nemusíte definovat cílovou platformu. Informace o formátu souboru .NET naleznete v tématu .NET Assembly File Format.

  • používá nejnovější opravený runtime
    Aplikace používá nejnovější modul runtime (v cílové hlavní skupině .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í je možné přepsat. Další informace najdete v tématu aplikace závislé na frameworku s postupným přechodem na novější verzi.

Nevýhody

  • vyžaduje předinstalování modulu runtime
    Vaše aplikace může běžet jenom v případě, že je už v hostitelském systému nainstalovaná verze rozhraní .NET, na které cíl aplikace cílí. Pro aplikaci můžete nakonfigurovat postupné chování tak, aby vyžadovala konkrétní verzi .NET nebo povolila novější verzi .NET. Další informace najdete v tématu aplikací závislých na architektuře.

  • .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, které většina aplikací dělá. Můžete nakonfigurovat, jak vaše aplikace používá novější verze .NET. Další informace najdete v tématu aplikace závislé na rámci.

Příklady

Publikujte aplikaci jako multiplatformní a závislou na rámci. Spustitelný soubor, který cílí na vaši aktuální platformu, se vytvoří společně se souborem dll dll. Všechny závislosti specifické pro platformu se publikují v aplikaci.

dotnet publish

Publikovat aplikaci jako závislou na platformě a frameworku. 64bitový spustitelný soubor Linuxu se vytvoří společně se souborem knihovny DLL . V aplikaci se publikují jenom závislosti cílové platformy.

dotnet publish -r linux-x64

Publikovat samostatně

Publikování aplikace jako samostatného souboru vytvoří spustitelný soubor specifický pro platformu. Výstupní složka publikování obsahuje všechny součásti aplikace, včetně knihoven .NET a cílového běhového prostředí. Aplikace je izolovaná od jiných aplikací .NET a nepoužívá místně nainstalovaný sdílený modul runtime. Uživatel vaší aplikace nemusí stahovat a instalovat .NET.

Samostatnou aplikaci můžete publikovat předáním parametru --self-contained do příkazu dotnet publish. Spustitelný binární soubor se vytvoří pro zadanou cílovou platformu. Pokud máte například aplikaci s názvem word_readera publikujete samostatný spustitelný soubor pro Windows, vytvoří se soubor word_reader.exe. Při publikování na Linuxu nebo macOS se vytvoří soubor word_reader. Cílová platforma a architektura se zadává pomocí parametru -r <RID> příkazu dotnet publish. Další informace o identifikátorech RID najdete v tématu katalog identifikátorů RID rozhraní .NET.

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

Výhody

  • Řízení verze rozhraní .NET
    Určujete, která verze rozhraní .NET se nasadí s vaší aplikací.

  • cílení specifické pro platformu
    Vzhledem k tomu, že aplikaci musíte publikovat pro každou platformu, víte, kde vaše aplikace běží. Pokud .NET zavádí novou platformu, uživatelé nemůžou aplikaci na této platformě spustit, dokud nevyvoláte verzi určenou pro danou platformu. Před spuštěním aplikace na nové platformě můžete otestovat problémy s kompatibilitou aplikace.

Nevýhody

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

    Spropitné

    Velikost nasazení v systémech Linux můžete zmenšit přibližně o 28 MB pomocí technologie .NET globalizace v invariantním režimu. To vynutí vaši aplikaci, aby zacházela se všemi jazykovými verzemi jako s invariantní kulturou .

    Spropitné

    Optimalizace IL může dále zmenšit velikost vašeho nasazení.

  • Těžší aktualizovat verzi rozhraní .NET
    Modul runtime .NET (distribuovaný s vaší aplikací) je možné upgradovat pouze vydáním nové verze aplikace.

Příklady

Publikujte aplikaci, která je samostatná. Vytvoří se 64bitový spustitelný soubor macOS.

dotnet publish -r osx-x64 --self-contained

Publikujte aplikaci, která je samostatná. Vytvoří se 64bitový spustitelný soubor Windows.

dotnet publish -r win-x64 --self-contained

Publikování s využitím snímků ReadyToRun

Publikování pomocí imagí ReadyToRun zlepšuje dobu spuštění aplikace za cenu zvětšení velikosti aplikace. Další informace najdete v tématu ReadyToRun.

Výhody

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

Nevýhody

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

Příklady

Publikujte aplikaci jako samostatnou a připravenou k provedení. Vytvoří se 64bitový spustitelný soubor macOS.

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

Publikujte aplikaci jako samostatně spustitelnou a ve formátu ReadyToRun. Vytvoří se 64bitový spustitelný soubor Windows.

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

Viz také