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 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 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 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ílovým systémem Windows, vytvoří se word_reader.exe spustitelný soubor 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. 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 pro 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. Pokud -r je parametr vynechán, vytvoří se spustitelný soubor pro vaši aktuální platformu. Všechny balíčky NuGet, které mají závislosti specifické pro platformu pro cílovou platformu, se zkopírují do složky pro publikování. Pokud nepotřebujete spustitelný soubor specifický pro Platform, můžete zadat <UseAppHost>False</UseAppHost> v souboru projektu. Další informace najdete v tématu Referenční dokumentace nástroje MSBuild pro projekty .NET SDK.

Výhody

  • Malé nasazení
    Distribuuje se jenom vaše aplikace a její závislosti. Modul runtime .NET a knihovny jsou nainstalovány uživatelem a všemi aplikacemi, které sdílí modul runtime.

  • Pro různé platformy
    Vaše aplikace a všechny. Knihovna založená na síti 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 Formát souboru sestavení .NET.

  • Používá nejnovější opravený modul runtime.
    Aplikace používá nejnovější modul runtime (v rámci cílové hlavní řady rozhraní .NET) nainstalovaného 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 předejte vám aplikace závislé na rozhraní.

Nevýhody

  • Vyžaduje předběžnou instalaci modulu runtime.
    Vaše aplikace může běžet pouze v případě, že je již v hostitelském systému nainstalovaná verze rozhraní .NET, na kterou vaše aplikace cílí. V případě, že chcete, aby aplikace vyžadovala určitou verzi rozhraní .NET nebo umožňovala novější verzi rozhraní .NET, můžete nakonfigurovat chování při přeposílání. Další informace najdete v tématu předejte vám aplikace závislé na rozhraní.

  • .NET se může změnit
    Běhový modul runtime a knihovny je možné aktualizovat v počítači, ve 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é 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 předejte vám aplikace závislé na rozhraní.

Následující nevýhody platí jenom pro .NET Core 2,1 SDK.

  • Použití dotnet příkazu ke spuštění aplikace
    Uživatelé musí spustit dotnet <filename.dll> příkaz pro spuštění aplikace. Sada .NET Core 2,1 SDK nevytváří spustitelné soubory specifické pro platformu pro publikované rozhraní závislé na platformě.

Příklady

Publikování aplikace závislé na architektuře pro různé platformy. Spustitelný soubor, který cílí na aktuální platformu, se vytvoří společně se souborem DLL .

dotnet publish

Publikování aplikace závislé na architektuře pro různé platformy. Společně se souborem DLL je vytvořen spustitelný soubor Linux 64. Tento příkaz nefunguje s .NET Core SDK 2,1.

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

Publikování samostatného kontejneru

Publikování aplikace jako samostatně obsahuje 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 nepoužívá místně nainstalovaný sdílený modul runtime. Uživatel vaší aplikace není potřebný ke stažení a instalaci rozhraní .NET.

Spustitelný soubor executable je vytvořen pro zadanou cílovou platformu. Pokud máte například aplikaci s názvem word_reader a publikujete samostatně uložený spustitelný soubor pro Windows, vytvoří se soubor word_reader.exe . Publikování pro Linux nebo macOS se vytvoří soubor word_reader . Cílová platforma a architektura se zadává pomocí -r <RID> parametru pro dotnet publish příkaz. Další informace o identifikátorů RID najdete v článku katalog identifikátorů .NET RID.

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

Výhody

  • Verze ovládacího prvku .NET
    Můžete řídit, která verze rozhraní .NET je nasazena s vaší aplikací.

  • Cílení na konkrétní platformu
    Vzhledem k tomu, že je nutné aplikaci publikovat pro každou platformu, víte, kde bude aplikace spuštěna. Pokud .NET zavádí novou platformu, uživatelé nemůžou svou aplikaci na této platformě spustit, dokud neuvolníte verzi, která cílí na tuto platformu. Před spuštěním vaší aplikace na nové platformě můžete aplikaci otestovat pro problémy s kompatibilitou.

Nevýhody

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

    Tip

    Velikost svého nasazení v systémech Linux můžete zmenšit přibližně o 28 MB pomocí režimu invariantovánírozhraní .NET pro globalizaci. To vynutí, aby vaše aplikace považovala všechny kultury jako invariantní jazykovou verzi.

    Tip

    Je k dispozici funkce oříznutí verze Preview , která může dále snižovat velikost nasazení.

  • Těžší aktualizace verze .NET
    .NET runtime (distribuované s vaší aplikací) se dá upgradovat jenom vydáním nové verze vaší aplikace. .NET ale aktualizuje důležité opravy zabezpečení podle potřeby v knihovně rozhraní v počítači, ve kterém je vaše aplikace spuštěná. Zodpovídáte za koncové ověření tohoto scénáře opravy zabezpečení.

Příklady

Publikujte samostatně obsaženou aplikaci. Je vytvořen macOS 64 bitový spustitelný soubor.

dotnet publish -r osx-x64

Publikujte samostatně obsaženou aplikaci. Je vytvořen spustitelný soubor systému Windows 64.

dotnet publish -r win-x64

Publikování pomocí ReadyToRun imagí

Publikování pomocí ReadyToRun imagí vylepšuje čas spuštění vaší aplikace za cenu zvýšení velikosti vaší aplikace. Další podrobnosti najdete v tématu ReadyToRun pro publikování pomocí ReadyToRun.

Výhody

  • Vylepšený čas spuštění
    Aplikace bude trávit méně času na spuštění JIT.

Nevýhody

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

Příklady

Publikujte aplikaci, která je samostatně obsažená a ReadyToRun. Je vytvořen macOS 64 bitový spustitelný soubor.

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

Publikujte aplikaci, která je samostatně obsažená a ReadyToRun. Je vytvořen spustitelný soubor systému Windows 64.

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

Viz také