Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 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. To jest przypomnienie o opublikowaniu kompilacji Release 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ć docelowy framework na dowolny prawidłowy Target Framework Moniker (TFM). Jeśli na przykład projekt używa <TargetFramework>net9.0</TargetFramework>
pliku binarnego przeznaczonego dla platformy .NET 9, 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 pomocą polecenia dotnet publish -f <TFM>
.
Domyślny tryb BUILD-CONFIGURATION jest Release, chyba że zmieni się go za pomocą parametru -c
.
Domyślny katalog wyjściowy polecenia dotnet publish
to ./bin/<BUILD-CONFIGURATION>/<TFM>/publish/
. Na przykład dotnet publish -c Release -f net9.0
publikuje w pliku ./bin/Release/net9.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 plik <PROJECT-NAME>.dll
zostaje utworzony 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, aby celować w określoną wersję 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 9, na każdej maszynie uruchomionej w aplikacji musi być zainstalowane środowisko uruchomieniowe platformy .NET 9. Zgodnie z opisem w sekcji Podstawy publikowania, możesz edytować plik projektu, aby zmienić domyślną platformę docelową lub ustawić więcej niż jedną platformę docelową.
Publikowanie pliku FDD tworzy aplikację, która automatycznie aktualizuje się do najnowszej dostępnej w systemie poprawki zabezpieczeń platformy .NET, na którym jest uruchamiana. 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 platformy (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, gdyż FDD wymaga hosta w formie polecenia dotnet
. 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
, co jest nadal akceptowalnym sposobem uruchamiania aplikacji.
Aplikacja jest skonfigurowana, aby celować w określoną wersję 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 9, na każdej maszynie uruchomionej w aplikacji musi być zainstalowane środowisko uruchomieniowe platformy .NET 9. Zgodnie z opisem w sekcji Podstawy publikowania, możesz edytować plik projektu, aby zmienić domyślną platformę docelową lub ustawić więcej niż jedną platformę docelową.
Opublikowanie FDE tworzy aplikację, która automatycznie przeskakuje do najnowszej aktualizacji zabezpieczeń platformy .NET dostępnej na systemie, na którym działa 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 |
---|---|
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 net9.0 -r win-x64 --self-contained false
. To polecenie tworzy następujący plik wykonywalny: ./bin/Debug/net9.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 działają w sposób globalny i mogą korzystać z konwencji formatowania, konwencji wielkości liter oraz porównywania i sortowania ciągów niezmiennej kultury. Aby uzyskać więcej informacji na temat niezmiennego trybu globalizacji i sposobu jej włączania, zobacz Tryb niezmienny globalizacji platformy .NET.
Konfiguracja sposobu wyszukiwania instalacji .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 aplikacji -
AppRelative
: ścieżka względem pliku wykonywalnego programu -
EnvironmentVariables
: wartośćDOTNET_ROOT[_<arch>]
zmiennych środowiskowych -
Global
: zarejestrowane i domyślne globalne lokalizacje instalacji
AppHostRelativeDotNet
określa ścieżkę względną do pliku wykonywalnego, która będzie wyszukiwana, gdy AppHostDotNetSearch
zawiera AppRelative
.
Aby uzyskać więcej informacji, zobacz AppHostDotNetSearch
, AppHostRelativeDotNet
oraz opcje lokalizacji instalacji w apphost.
Kompleksowe wdrożenie
Kiedy publikujesz samodzielne wdrożenie (SCD), zestaw .NET SDK tworzy wykonywalny plik specyficzny dla platformy. Opublikowanie SCD obejmuje wszystkie wymagane pliki .NET do uruchomienia aplikacji, ale nie obejmuje natywnych zależności .NET (na przykład dla .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 aktualizowana 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 z poleceniem dotnet publish
:
-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 pakiet .NET SDK o utworzeniu pliku wykonywalnego jako SCD.
Tryb publikowania | Polecenie |
---|---|
Kompleksowe wdrożenie | dotnet publish -c Release -r <RID> --self-contained true |
Napiwek
- W wersjach .NET 6 i nowszych można zmniejszyć całkowity rozmiar kompatybilnych aplikacji autonomicznych, publikując w wersji zredukowanej. 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 niezgodności przycinania, aby określić, czy przycinanie ma sens dla Twojej 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 działają w sposób globalny i mogą korzystać z konwencji formatowania, konwencji wielkości liter oraz porównywania i sortowania ciągów niezmiennej kultury. Aby uzyskać więcej informacji na temat niezmiennego trybu globalizacji i sposobu jej włączania, zobacz Tryb niezmienny globalizacji platformy .NET Core.