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:
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:
- Nazwa pliku wykonywalnego aplikacji zostanie wyświetlona na liście procesów, a nie
dotnet
, co może być mylące, jeśli istnieje więcej niż jedna. - Plik wykonywalny specyficzny dla platformy można dostosować przy użyciu funkcji specyficznych dla systemu operacyjnego. Na przykład zobacz tę dyskusję na temat konfigurowania domyślnego rozmiaru stosu w systemie Windows.
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
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
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
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