Publikowanie aplikacji platformy .NET za pomocą interfejsu wiersza polecenia platformy .NET

W tym artykule pokazano, jak opublikować aplikację platformy .NET z poziomu wiersza polecenia. Platforma .NET udostępnia trzy sposoby publikowania aplikacji. Wdrożenie zależne od platformy tworzy międzyplatformowy plik .dll, który używa lokalnie zainstalowanego środowiska uruchomieniowego platformy .NET. Plik wykonywalny zależny od platformy tworzy plik wykonywalny specyficzny dla platformy, który używa lokalnie zainstalowanego środowiska uruchomieniowego platformy .NET. Samodzielny plik wykonywalny tworzy plik wykonywalny specyficzny dla platformy i zawiera lokalną kopię środowiska uruchomieniowego platformy .NET.

Aby zapoznać się z omówieniem tych trybów publikowania, zobacz Wdrażanie aplikacji platformy .NET.

Szukasz krótkiej pomocy dotyczącej korzystania z interfejsu wiersza polecenia? W poniższej tabeli przedstawiono kilka przykładów publikowania aplikacji. Możesz określić strukturę docelową za pomocą parametru -f <TFM> lub edytując plik projektu. Aby uzyskać więcej informacji, zobacz Artykuł Publishing basics (Podstawy publikowania).

Tryb publikowania Polecenie
Wdrożenie zależne od struktury dotnet publish -c Release -p:UseAppHost=false
Plik wykonywalny zależny od struktury dotnet publish -c Release -r <RID> --self-contained false
dotnet publish -c Release
Wdrożenie samodzielne dotnet publish -c Release -r <RID> --self-contained true

Uwaga

  • Parametr -c Release nie jest wymagany. Jest on dostarczany jako przypomnienie o opublikowaniu kompilacji wydania aplikacji.
  • W zestawie .NET SDK 3.1 lub nowszym plik wykonywalny zależny od platformy jest domyślnym trybem publikowania podczas uruchamiania podstawowego dotnet publish polecenia.

Podstawy publikowania

Ustawienie <TargetFramework> pliku projektu określa domyślną strukturę docelową podczas publikowania aplikacji. Możesz zmienić strukturę docelową na dowolną prawidłową strukturę docelową Moniker (TFM). Jeśli na przykład projekt używa <TargetFramework>net8.0</TargetFramework>pliku binarnego, który jest przeznaczony dla platformy .NET 8, zostanie utworzony. Program TFM określony w tym ustawieniu jest domyślnym elementem docelowym używanym dotnet publish przez polecenie .

Jeśli chcesz kierować więcej niż jedną strukturę, możesz ustawić <TargetFrameworks> ustawienie na wiele wartości TFM rozdzielonych średnikami. Podczas kompilowanie aplikacji kompilacja jest generowany dla każdej platformy docelowej. Jednak podczas publikowania aplikacji należy określić platformę docelową za dotnet publish -f <TFM> pomocą polecenia .

Domyślny tryb BUILD-CONFIGURATION to Debuguj , chyba że zostanie zmieniony za pomocą parametru -c .

Domyślny katalog dotnet publish wyjściowy polecenia to ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/. Na przykład dotnet publish -c Release -f net8.0 publikuje w pliku ./bin/Release/net8.0/publish/. Można jednak wybrać uproszczoną strukturę ścieżki danych wyjściowych i folderów dla wszystkich danych wyjściowych kompilacji. Aby uzyskać więcej informacji, zobacz Układ danych wyjściowych artefaktów.

Zależności natywne

Jeśli aplikacja ma natywne zależności, może nie działać w innym systemie operacyjnym. Jeśli na przykład aplikacja używa natywnego interfejsu API systemu Windows, nie będzie działać w systemie macOS lub Linux. Należy podać kod specyficzny dla platformy i skompilować plik wykonywalny dla każdej platformy.

Rozważ również, jeśli biblioteka, do której się odwołujesz, ma natywną zależność, aplikacja może nie działać na każdej platformie. Istnieje jednak możliwość, że odwołujący się pakiet NuGet zawiera wersje specyficzne dla platformy do obsługi wymaganych zależności natywnych.

Podczas dystrybucji aplikacji z natywnymi zależnościami może być konieczne użycie przełącznika dotnet publish -r <RID> w celu określenia platformy docelowej, dla której chcesz opublikować. Aby uzyskać listę identyfikatorów środowiska uruchomieniowego, zobacz wykaz identyfikatorów środowiska uruchomieniowego (RID).

Więcej informacji na temat plików binarnych specyficznych dla platformy znajduje się w sekcjach Plik wykonywalny zależny od platformy i Samodzielne wdrażanie .

Przykładowa aplikacja

Aby zapoznać się z poleceniami publikowania, możesz użyć następującej aplikacji. Aplikacja jest tworzona przez uruchomienie następujących poleceń w terminalu:

mkdir apptest1
cd apptest1
dotnet new console
dotnet add package Figgle

Plik Program.cs lub Program.vb wygenerowany przez szablon konsoli musi zostać zmieniony na następujące:

using System;

namespace apptest1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"));
        }
    }
}
Module Program
    Sub Main(args As String())
        Console.WriteLine(Figgle.FiggleFonts.Standard.Render("Hello, World!"))
    End Sub
End Module

Po uruchomieniu aplikacji (dotnet run) zostaną wyświetlone następujące dane wyjściowe:

  _   _      _ _         __        __         _     _ _
 | | | | ___| | | ___    \ \      / /__  _ __| | __| | |
 | |_| |/ _ \ | |/ _ \    \ \ /\ / / _ \| '__| |/ _` | |
 |  _  |  __/ | | (_) |    \ V  V / (_) | |  | | (_| |_|
 |_| |_|\___|_|_|\___( )    \_/\_/ \___/|_|  |_|\__,_(_)
                     |/

Wdrożenie zależne od struktury

Podczas publikowania aplikacji jako FDD <PROJECT-NAME>.dll plik jest tworzony w folderze ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/ . Aby uruchomić aplikację, przejdź do folderu output i użyj dotnet <PROJECT-NAME>.dll polecenia .

Aplikacja jest skonfigurowana do określania określonej wersji platformy .NET. Docelowe środowisko uruchomieniowe platformy .NET musi znajdować się na dowolnej maszynie, na której działa aplikacja. Jeśli na przykład aplikacja jest przeznaczona dla platformy .NET Core 8, wszystkie maszyny uruchomione w aplikacji muszą mieć zainstalowane środowisko uruchomieniowe platformy .NET Core 8. Zgodnie z opisem w sekcji Podstawy publikowania możesz edytować plik projektu, aby zmienić domyślną strukturę docelową lub docelową więcej niż jedną platformę.

Opublikowanie identyfikatora FDD tworzy aplikację, która automatycznie przekazuje do najnowszej poprawki zabezpieczeń platformy .NET dostępnej w systemie, w ramach którego jest uruchamiana aplikacja. Aby uzyskać więcej informacji na temat powiązania wersji w czasie kompilacji, zobacz Wybieranie wersji platformy .NET do użycia.

Tryb publikowania Polecenie
Wdrożenie zależne od struktury dotnet publish -c Release -p:UseAppHost=false

Plik wykonywalny zależny od struktury

Plik wykonywalny zależny od struktury (FDE) jest trybem domyślnym dla podstawowego dotnet publish polecenia. Nie musisz określać żadnych innych parametrów, o ile chcesz kierować do bieżącego systemu operacyjnego.

W tym trybie jest tworzony host wykonywalny specyficzny dla platformy do hostowania aplikacji międzyplatformowej. Ten tryb jest podobny do FDD, ponieważ FDD wymaga hosta w postaci dotnet polecenia. Nazwa pliku wykonywalnego hosta różni się w zależności od platformy i nosi nazwę podobną do <PROJECT-FILE>.exe. Możesz uruchomić ten plik wykonywalny bezpośrednio zamiast wywoływać dotnet <PROJECT-FILE>.dllmetodę , która jest nadal akceptowalnym sposobem uruchamiania aplikacji.

Aplikacja jest skonfigurowana do określania określonej wersji platformy .NET. Docelowe środowisko uruchomieniowe platformy .NET musi znajdować się na dowolnej maszynie, na której działa aplikacja. Jeśli na przykład aplikacja jest przeznaczona dla platformy .NET 8, na każdej maszynie uruchomionej przez aplikację musi być zainstalowane środowisko uruchomieniowe platformy .NET 8. Zgodnie z opisem w sekcji Podstawy publikowania możesz edytować plik projektu, aby zmienić domyślną strukturę docelową lub docelową więcej niż jedną platformę.

Opublikowanie funkcji FDE tworzy aplikację, która automatycznie przekazuje do najnowszej poprawki zabezpieczeń platformy .NET dostępnej w systemie z uruchomioną aplikacją. Aby uzyskać więcej informacji na temat powiązania wersji w czasie kompilacji, zobacz Wybieranie wersji platformy .NET do użycia.

Tryb publikowania Polecenie
Plik wykonywalny zależny od struktury dotnet publish -c Release -r <RID> --self-contained false
dotnet publish -c Release

Za każdym razem, gdy używasz przełącznika, ścieżka folderu wyjściowego -r zmienia się na: ./bin/<BUILD-CONFIGURATION>/<TFM>/<RID>/publish/

Jeśli używasz przykładowej aplikacji, uruchom polecenie dotnet publish -f net6.0 -r win-x64 --self-contained false. To polecenie tworzy następujący plik wykonywalny: ./bin/Debug/net6.0/win-x64/publish/apptest1.exe

Uwaga

Całkowity rozmiar wdrożenia można zmniejszyć, włączając niezmienny tryb globalizacji. Ten tryb jest przydatny w przypadku aplikacji, które nie są globalnie świadome i mogą używać konwencji formatowania, konwencji wielkości liter oraz porównania ciągów i kolejności sortowania niezmiennej kultury. Aby uzyskać więcej informacji na temat niezmiennego trybu globalizacji i sposobu jej włączania, zobacz Tryb niezmienny globalizacji platformy .NET.

Wdrożenie samodzielne

Podczas publikowania samodzielnego wdrożenia (SCD) zestaw .NET SDK tworzy plik wykonywalny specyficzny dla platformy. Publikowanie scD obejmuje wszystkie wymagane pliki .NET do uruchomienia aplikacji, ale nie obejmuje natywnych zależności platformy .NET (na przykład dla platformy .NET 6 w systemie Linux lub .NET 8 w systemie Linux). Te zależności muszą być obecne w systemie przed uruchomieniem aplikacji.

Publikowanie scD tworzy aplikację, która nie jest przekazywana do najnowszej dostępnej poprawki zabezpieczeń platformy .NET. Aby uzyskać więcej informacji na temat powiązania wersji w czasie kompilacji, zobacz Wybieranie wersji platformy .NET do użycia.

Aby opublikować protokół SCD, należy użyć następujących przełączników dotnet publish z poleceniem :

  • -r <RID>

    Ten przełącznik używa identyfikatora (RID) do określenia platformy docelowej. Aby uzyskać listę identyfikatorów środowiska uruchomieniowego, zobacz wykaz identyfikatorów środowiska uruchomieniowego (RID).

  • --self-contained true

    Ten przełącznik informuje zestaw .NET SDK o utworzeniu pliku wykonywalnego jako scD.

Tryb publikowania Polecenie
Wdrożenie samodzielne dotnet publish -c Release -r <RID> --self-contained true

Napiwek

  • W wersjach .NET 6 i nowszych można zmniejszyć całkowity rozmiar zgodnych aplikacji samodzielnie, publikując przycięte. Dzięki temu trymer może usuwać części struktury i przywoływalne zestawy, które nie znajdują się w żadnej ścieżce kodu lub potencjalnie odwoływalone w odbiciu środowiska uruchomieniowego. Zobacz przycinanie niezgodności, aby określić, czy przycinanie ma sens dla aplikacji.
  • Całkowity rozmiar wdrożenia można zmniejszyć, włączając niezmienny tryb globalizacji. Ten tryb jest przydatny w przypadku aplikacji, które nie są globalnie świadome i mogą używać konwencji formatowania, konwencji wielkości liter oraz porównania ciągów i kolejności sortowania niezmiennej kultury. Aby uzyskać więcej informacji na temat niezmiennego trybu globalizacji i sposobu jej włączania, zobacz Tryb niezmienny globalizacji platformy .NET Core.

Zobacz też