Udostępnij za pośrednictwem


Omówienie publikowania aplikacji platformy .NET

Aplikacje tworzone za pomocą platformy .NET można publikować w dwóch różnych trybach, a tryb wpływa na sposób uruchamiania aplikacji przez użytkownika.

Publikowanie aplikacji jako samodzielnych ( self-contained) powoduje, że aplikacja zawiera środowisko uruchomieniowe .NET, biblioteki, a także aplikację wraz z jej zależnościami. Użytkownicy aplikacji mogą ją uruchomić na maszynie, na którym nie zainstalowano środowiska uruchomieniowego platformy .NET.

Publikowanie aplikacji jako zależne od platformy tworzy aplikację, która zawiera tylko samą aplikację i jej zależności. Użytkownicy aplikacji muszą oddzielnie zainstalować środowisko uruchomieniowe platformy .NET.

Oba tryby publikowania domyślnie tworzą plik wykonywalny specyficzny dla platformy. Aplikacje zależne od platformy można tworzyć bez pliku wykonywalnego, a aplikacje te są międzyplatformowe.

Po utworzeniu pliku wykonywalnego można określić platformę docelową za pomocą identyfikatora środowiska uruchomieniowego (RID). Aby uzyskać więcej informacji na temat identyfikatorów RID, zobacz Katalog RID platformy .NET.

W poniższej tabeli przedstawiono polecenia używane do publikowania aplikacji jako zależne od platformy lub samodzielne:

Typ Polecenie
plik wykonywalny dla aktualnej platformy zależny od jej środowiska. dotnet publish
wykonywalny zależny od frameworku dla konkretnej platformy. dotnet publish -r <RID>
binarne zależne od platformy. dotnet publish
samodzielny plik wykonywalny. dotnet publish -r <RID> --self-contained

Aby uzyskać więcej informacji, zobacz polecenie .NET dotnet publish.

Tworzenie pliku wykonywalnego

Pliki wykonywalne nie są międzyplatformowe, są specyficzne dla systemu operacyjnego i architektury procesora CPU. Podczas publikowania aplikacji i tworzenia pliku wykonywalnego możesz opublikować aplikację jako samodzielna lub zależna od platformy. Publikowanie aplikacji jako samodzielnej obejmuje środowisko uruchomieniowe platformy .NET z aplikacją, a użytkownicy aplikacji nie muszą martwić się o instalowanie platformy .NET przed uruchomieniem aplikacji. Publikowanie aplikacji jako zależnej od platformy nie obejmuje środowiska uruchomieniowego platformy .NET; uwzględniane są tylko zależności aplikacji i innych firm.

Następujące polecenia tworzą plik wykonywalny:

Typ Polecenie
plik wykonywalny zależny od środowiska dla bieżącej platformy. dotnet publish
wykonywalne zależne od frameworka dla określonej platformy. dotnet publish -r <RID>
samodzielny plik wykonywalny. dotnet publish -r <RID> --self-contained

Tworzenie międzyplatformowego pliku binarnego

Pliki binarne międzyplatformowe są tworzone podczas publikowania aplikacji jako zależne od frameworka w postaci pliku dll. Plik dll ma nazwę po projekcie. Jeśli na przykład masz aplikację o nazwie word_reader, zostanie utworzony plik o nazwie word_reader.dll. Aplikacje opublikowane w ten sposób są uruchamiane za pomocą polecenia dotnet <filename.dll> i mogą być uruchamiane na dowolnej platformie.

Pliki binarne międzyplatformowe można uruchamiać w dowolnym systemie operacyjnym, o ile docelowe środowisko uruchomieniowe platformy .NET jest już zainstalowane. Jeśli docelowe środowisko uruchomieniowe platformy .NET nie jest zainstalowane, aplikacja może działać przy użyciu nowszego środowiska uruchomieniowego, jeśli aplikacja jest skonfigurowana do przesyłania dalej. Aby uzyskać więcej informacji, zobacz aplikacje zależne od platformy, które mogą być aktualizowane do nowszych wersji.

Możesz uruchomić aplikację jako plik wykonywalny specyficzny dla platformy lub jako plik binarny dla wielu platform za pomocą polecenia dotnet. Nie powinno być różnicy w zachowaniu aplikacji podczas uruchamiania pliku wykonywalnego specyficznego dla platformy w porównaniu z poleceniem dotnet dla zwykłych aplikacji serwerowych. Uruchamianie za pomocą pliku wykonywalnego specyficznego dla platformy zapewnia lepszą integrację z bazowym systemem operacyjnym. Na przykład:

Następujące polecenie tworzy plik binarny dla wielu platform:

Typ Polecenie
wieloplatformowe binarne zależne od frameworku. dotnet publish

Publikowanie zależne od platformy

Aplikacje publikowane jako zależne od platformy są międzyplatformowe i nie obejmują środowiska uruchomieniowego platformy .NET. Użytkownik aplikacji jest wymagany do zainstalowania środowiska uruchomieniowego platformy .NET.

Publikowanie aplikacji jako zależnej od platformy tworzy międzyplatformowe binarne jako plik dll oraz plik wykonywalny specyficzny dla platformy , który jest przeznaczony dla bieżącej platformy. biblioteki dll jest międzyplatformowa, a plik wykonywalny nie jest. Jeśli na przykład opublikujesz aplikację o nazwie word_reader z przeznaczeniem dla systemu Windows, zostanie utworzony plik wykonywalny word_reader.exe wraz z word_reader.dll. Gdy celem są systemy Linux lub macOS, tworzony jest program wykonywalny word_reader wraz z word_reader.dll. Jeśli aplikacja korzysta z pakietu NuGet, który ma implementacje specyficzne dla różnych platform, zależności dla wszystkich platform są kopiowane do folderu publikowania\runtimes\{platform}.

Wieloplatformowy plik binarny aplikacji można uruchomić za pomocą polecenia dotnet <filename.dll> i można go uruchomić na dowolnej platformie.

Specyficzne dla platformy i zależne od frameworku

Aplikację zależną od frameworku i specyficzną dla platformy można opublikować, przekazując parametry -r <RID> do polecenia dotnet publish. Publikowanie w taki sposób jest takie samo jak publikowanie zależne od platformy, z tym wyjątkiem, że zależności specyficzne dla platformy obsługiwane są inaczej. Jeśli aplikacja używa pakietu NuGet z implementacjami specyficznymi dla platformy, kopiowane są tylko zależności platformy docelowej. Te zależności są kopiowane bezpośrednio do folderu publikacji .

Chociaż technicznie rzecz biorąc, stworzone dane binarne są międzyplatformowe, to celując w określoną platformę, nie masz gwarancji, że twoja aplikacja będzie działać międzyplatformowo. Możesz uruchomić dotnet <filename.dll>, ale aplikacja może ulec awarii, gdy próbuje uzyskać dostęp do brakujących zależności specyficznych dla platformy.

Aby uzyskać więcej informacji na temat identyfikatorów RID, zobacz katalog RID platformy .NET.

Zalety

  • małe wdrożenie
    Dystrybuowana jest tylko twoja aplikacja i jej zależności. Środowisko uruchomieniowe i biblioteki platformy .NET są instalowane przez użytkownika i wszystkie aplikacje współużytkują środowisko uruchomieniowe.

  • międzyplatformowe
    Aplikacja i dowolna biblioteka oparta na .NET działa na innych systemach operacyjnych. Nie musisz definiować platformy docelowej dla aplikacji. Aby uzyskać informacje o formacie pliku .NET, zobacz .NET Assembly File Format.

  • Używa najnowszego środowiska uruchomieniowego z poprawkami
    Aplikacja używa najnowszego środowiska uruchomieniowego (w docelowej głównej-pomniejszej rodzinie platformy .NET) zainstalowanego na docelowym systemie. Oznacza to, że aplikacja automatycznie używa najnowszej poprawkowej wersji środowiska uruchomieniowego platformy .NET. To zachowanie domyślne może zostać zastąpione. Aby uzyskać więcej informacji, zobacz aplikacje zależne od platformy przechodzą do następnej wersji.

Wady

  • wymaga wstępnego zainstalowania środowiska uruchomieniowego
    Aplikacja może działać tylko wtedy, gdy wersja platformy .NET, na którą jest skierowana, jest już zainstalowana w systemie hostującym. Możesz skonfigurować zachowanie aktualizacji dla aplikacji, aby wymagać określonej wersji platformy .NET lub zezwolić na nowszą wersję. Aby uzyskać więcej informacji, zobacz aplikacje zależne od platformy, które przesuwają się do przodu.

  • .NET może ulec zmianie
    Istnieje możliwość zaktualizowania środowiska uruchomieniowego i bibliotek platformy .NET na maszynie, na której jest uruchamiana aplikacja. W rzadkich przypadkach może to zmienić zachowanie Twojej aplikacji, jeśli używasz bibliotek .NET, z których korzysta większość aplikacji. Możesz skonfigurować sposób korzystania z nowszych wersji platformy .NET. Aby uzyskać więcej informacji, zobacz aplikacje zależne od frameworka i ich przechodzenie do nowszych wersji.

Przykłady

Opublikuj aplikację jako wieloplatformową i zależną od środowiska. Plik wykonywalny przeznaczony dla bieżącej platformy jest tworzony wraz z plikiem dll . Wszystkie zależności specyficzne dla platformy są publikowane w aplikacji.

dotnet publish

Opublikuj aplikację jako specyficzną dla platformy i zależną od frameworka. Plik wykonywalny 64-bitowy systemu Linux jest tworzony wraz z plikiem dll . Tylko zależności platformy docelowej są publikowane w aplikacji.

dotnet publish -r linux-x64

Samodzielna publikacja

Publikowanie aplikacji jako samodzielnej aplikacji powoduje utworzenie pliku wykonywalnego specyficznego dla platformy. Folder publikowania wyjściowego zawiera wszystkie składniki aplikacji, w tym biblioteki .NET i docelowe środowisko uruchomieniowe. Aplikacja jest odizolowana od innych aplikacji platformy .NET i nie używa lokalnie zainstalowanego środowiska uruchomieniowego udostępnionego. Użytkownik Twojej aplikacji nie musi pobierać ani instalować .NET.

Można opublikować aplikację samodzielną, używając parametru --self-contained z poleceniem dotnet publish. Plik binarny wykonywalny jest generowany dla określonej platformy docelowej. Jeśli na przykład masz aplikację o nazwie word_readeri publikujesz samodzielny plik wykonywalny dla systemu Windows, zostanie utworzony plik word_reader.exe. Podczas publikowania na system Linux lub macOS tworzony jest plik word_reader. Platforma docelowa i architektura są określane za pomocą parametru -r <RID> dla polecenia dotnet publish. Aby uzyskać więcej informacji na temat identyfikatorów RID, zobacz katalog RID platformy .NET pod oraz.

Jeśli aplikacja ma zależności specyficzne dla platformy, takie jak pakiet NuGet zawierający zależności specyficzne dla platformy, są one kopiowane do folderu publikowania wraz z aplikacją.

Zalety

  • Kontrola wersji platformy .NET
    Określasz, która wersja platformy .NET jest wdrażana w aplikacji.

  • Określanie celów specyficznych dla platformy
    Ponieważ musisz opublikować aplikację dla każdej platformy, wiesz, gdzie działa aplikacja. Jeśli platforma .NET wprowadzi nową platformę, użytkownicy nie będą mogli uruchamiać aplikacji na tej platformie, dopóki nie wydasz wersji przeznaczonej dla tej platformy. Aplikację można przetestować pod kątem problemów ze zgodnością, zanim użytkownicy uruchomią aplikację na nowej platformie.

Wady i niedogodności

  • większe wdrożenia
    Ponieważ aplikacja zawiera środowisko uruchomieniowe platformy .NET i wszystkie zależności aplikacji, wymagany rozmiar pobierania i miejsce na dysku twardym jest większe niż wersja zależna od platformy .

    Napiwek

    Rozmiar wdrożenia w systemach Linux można zmniejszyć o około 28 MB przy użyciu .NET w niezmiennym trybie globalizacji . Spowoduje to, że aplikacja będzie traktować wszystkie kultury, takie jak niezmienna kultura.

    Napiwek

    Przycinanie IL może jeszcze bardziej zmniejszyć rozmiar wdrożenia.

  • Trudniej jest aktualizować wersję platformy .NET
    Środowisko uruchomieniowe .NET (dystrybuowane za pomocą aplikacji) można uaktualnić tylko przez wydanie nowej wersji aplikacji.

Przykłady

Opublikuj samodzielną aplikację. Zostanie utworzony 64-bitowy plik wykonywalny systemu macOS.

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

Opublikuj aplikację samodzielną. Zostanie utworzony plik wykonywalny systemu Windows 64-bitowy.

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

Publikowanie przy użyciu obrazów ReadyToRun

Publikowanie przy użyciu obrazów ReadyToRun poprawia czas uruchamiania aplikacji kosztem zwiększenia rozmiaru aplikacji. Aby uzyskać więcej informacji, zobacz ReadyToRun.

Zalety

  • ulepszony czas uruchamiania
    Aplikacja poświęca mniej czasu na uruchamianie trybu JIT.

Wady i niedogodności

  • większy rozmiar
    Aplikacja jest większa na dysku.

Przykłady

Opublikuj aplikację jako samodzielną (ang. self-contained) i ReadyToRun. Zostanie utworzony 64-bitowy plik wykonywalny systemu macOS.

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

Opublikuj aplikację jako samodzielną i ReadyToRun. Zostanie utworzony plik wykonywalny systemu Windows 64-bitowy.

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

Zobacz też