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 wyrazić zgodę na uproszczoną strukturę ścieżki wyjściowej i folderu 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>.dll
metodę , 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.
Konfigurowanie zachowania wyszukiwania instalacji platformy .NET
W programie .NET 9 i nowszych wersjach można skonfigurować ścieżki wyszukiwania instalacji platformy .NET opublikowanego pliku wykonywalnego za pomocą właściwości AppHostDotNetSearch
i AppHostRelativeDotNet
.
AppHostDotNetSearch
umożliwia określenie co najmniej jednej lokalizacji, w której plik wykonywalny będzie szukać instalacji platformy .NET:
AppLocal
: folder pliku wykonywalnego aplikacjiAppRelative
: ścieżka względem pliku wykonywalnego aplikacjiEnvironmentVariables
: wartośćDOTNET_ROOT[_<arch>]
zmiennych środowiskowychGlobal
: zarejestrowane i domyślne globalne lokalizacje instalacji
AppHostRelativeDotNet
określa ścieżkę względną pliku wykonywalnego, który będzie wyszukiwany, gdy AppHostDotNetSearch
zawiera AppRelative
.
Aby uzyskać więcej informacji, zobacz AppHostRelativeDotNet
AppHostDotNetSearch
i install location options in apphost (Opcje lokalizacji instalacji w usłudze apphost).
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.