Szkolenie
Moduł
Publish an ASP.NET Core app - Training
Learn how to publish an ASP.NET Core app for deployment to a web server or cloud service.
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
W tym artykule opisano zasady używane przez narzędzia platformy .NET, zestaw SDK i środowisko uruchomieniowe do wybierania wersji. Te zasady zapewniają równowagę między uruchomionymi aplikacjami przy użyciu określonych wersji i ułatwiają uaktualnianie maszyn deweloperskich i użytkowników końcowych. Te zasady umożliwiają:
Następuje wybór wersji:
Pozostała część tego dokumentu analizuje te cztery scenariusze.
Polecenia zestawu SDK obejmują dotnet new
polecenia i dotnet run
. Interfejs wiersza polecenia platformy .NET musi wybrać wersję zestawu SDK dla każdego dotnet
polecenia. Domyślnie używa najnowszego zestawu SDK zainstalowanego na maszynie, nawet jeśli:
Korzystając z najnowszych funkcji i ulepszeń zestawu SDK, można korzystać z wcześniejszych wersji środowiska uruchomieniowego platformy .NET. Różne wersje środowiska uruchomieniowego platformy .NET można kierować przy użyciu tych samych narzędzi zestawu SDK.
W rzadkich przypadkach może być konieczne użycie starszej wersji zestawu SDK. Należy określić wersję w pliku global.json. Zasady "użyj najnowszej" oznacza, że używasz tylko global.json do określenia wersji zestawu SDK platformy .NET starszej niż najnowsza zainstalowana wersja.
global.json można umieścić w dowolnym miejscu w hierarchii plików. Kontrolujesz, które projekty danego global.json mają zastosowanie w jego miejscu w systemie plików. Interfejs wiersza polecenia platformy .NET wyszukuje plik global.json iteracyjnie nawigując po ścieżce w górę z bieżącego katalogu roboczego (który nie musi być taki sam jak katalog projektu). Pierwszy znaleziony plik global.json określa używaną wersję. Jeśli ta wersja zestawu SDK jest zainstalowana, używana jest ta wersja. Jeśli zestaw SDK określony w global.json nie zostanie znaleziony, interfejs wiersza polecenia platformy .NET używa reguł dopasowania do wybierania zgodnego zestawu SDK lub kończy się niepowodzeniem, jeśli nie zostanie znaleziony żaden.
W poniższym przykładzie przedstawiono składnię global.json :
{
"sdk": {
"version": "5.0.0"
}
}
Proces wybierania wersji zestawu SDK to:
dotnet
wyszukuje plik global.json iteracyjnie odwrotnie przechodząc ścieżkę w górę z bieżącego katalogu roboczego.dotnet
używa zestawu SDK określonego w pierwszym global.json znalezionym .dotnet
używa najnowszego zainstalowanego zestawu SDK, jeśli nie znaleziono global.json .Aby uzyskać więcej informacji na temat wyboru wersji zestawu SDK, zobacz sekcje Dopasowywanie reguł i rollForward w artykule przeglądu global.json.
Projekt jest kompilowane na podstawie interfejsów API zdefiniowanych w moniker (TFM) platformy docelowej. Należy określić strukturę docelową w pliku projektu. TargetFramework
Ustaw element w pliku projektu, jak pokazano w poniższym przykładzie:
<TargetFramework>net8.0</TargetFramework>
Projekt można skompilować na wielu serwerach TFM. Ustawianie wielu platform docelowych jest bardziej powszechne w przypadku bibliotek, ale można je również wykonywać za pomocą aplikacji. Należy określić TargetFrameworks
właściwość (w liczbie mnogiej TargetFramework
). Struktury docelowe są rozdzielane średnikami, jak pokazano w poniższym przykładzie:
<TargetFrameworks>net8.0;net47</TargetFrameworks>
Dany zestaw SDK obsługuje stały zestaw struktur, ograniczony do docelowej struktury środowiska uruchomieniowego, z który jest dostarczany. Na przykład zestaw .NET 8 SDK zawiera środowisko uruchomieniowe platformy .NET 8, które jest implementacją platformy net8.0
docelowej. Zestaw .NET 8 SDK obsługuje elementy net7.0
, net6.0
i net5.0
, ale nie net9.0
(lub nowsze). Zainstaluj zestaw .NET 9 SDK do skompilowania dla programu net9.0
.
.NET Standard to sposób na ukierunkowanie powierzchni interfejsu API współużytkowanego przez różne implementacje platformy .NET. Począwszy od wydania platformy .NET 5, która jest samym standardem interfejsu API, platforma .NET Standard ma niewielkie znaczenie, z wyjątkiem jednego scenariusza: platforma .NET Standard jest przydatna, gdy chcesz kierować programy zarówno .NET, jak i .NET Framework. Platforma .NET 5 implementuje wszystkie wersje platformy .NET Standard.
Aby uzyskać więcej informacji, zobacz .NET 5 i .NET Standard.
Po uruchomieniu aplikacji ze źródła dotnet run
za pomocą polecenia , z wdrożenia zależnego od platformy z dotnet myapp.dll
programem lub pliku wykonywalnego zależnego od platformy z myapp.exe
dotnet
programem plik wykonywalny jest hostem aplikacji.
Host wybiera najnowszą wersję poprawki zainstalowaną na maszynie. Jeśli na przykład określono net5.0
w pliku projektu i 5.0.2
jest zainstalowane najnowsze środowisko uruchomieniowe platformy .NET, 5.0.2
używane jest środowisko uruchomieniowe.
Jeśli nie zostanie znaleziona akceptowalna 5.0.*
wersja, zostanie użyta nowa 5.*
wersja. Jeśli na przykład określono wartość net5.0
i jest zainstalowana tylko 5.1.0
, aplikacja jest uruchamiana przy użyciu środowiska uruchomieniowego 5.1.0
. To zachowanie jest określane jako "wycofywanie wersji pomocniczej". Niższe wersje również nie będą brane pod uwagę. Jeśli nie zostanie zainstalowane akceptowalne środowisko uruchomieniowe, aplikacja nie zostanie uruchomiona.
W kilku przykładach użycia pokazano zachowanie, jeśli jest to cel 5.0:
Wprowadzanie wersji pomocniczej ma jeden efekt uboczny, który może mieć wpływ na użytkowników końcowych. Rozważmy następujący scenariusz:
Możliwe, że 5.0.3 i 5.1.0 zachowują się inaczej, szczególnie w przypadku scenariuszy, takich jak serializowanie danych binarnych.
Przed zastąpieniem domyślnego zachowania wycofywania zapoznaj się z poziomem zgodności środowiska uruchomieniowego platformy .NET.
Zachowanie wprowadzania dla aplikacji można skonfigurować na cztery różne sposoby:
Ustawienie na poziomie projektu przez ustawienie <RollForward>
właściwości:
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Plik *.runtimeconfig.json
.
Ten plik jest generowany podczas kompilowania aplikacji. <RollForward>
Jeśli właściwość została ustawiona w projekcie, jest ona odtwarzana w *.runtimeconfig.json
pliku jako rollForward
ustawienie. Użytkownicy mogą edytować ten plik, aby zmienić zachowanie aplikacji.
{
"runtimeOptions": {
"tfm": "net5.0",
"rollForward": "LatestMinor",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "5.0.0"
}
}
}
dotnet
Właściwość polecenia--roll-forward <value>
.
Po uruchomieniu aplikacji możesz kontrolować zachowanie wycofywania za pomocą wiersza polecenia:
dotnet run --roll-forward LatestMinor
dotnet myapp.dll --roll-forward LatestMinor
myapp.exe --roll-forward LatestMinor
Zmienna DOTNET_ROLL_FORWARD
środowiskowa.
Zachowanie wycofywania jest ustawiane według następującej kolejności po uruchomieniu aplikacji, większa liczba elementów, które mają pierwszeństwo przed niższymi liczbami elementów:
*.runtimeconfig.json
Najpierw zostanie oceniony plik konfiguracji.DOTNET_ROLL_FORWARD
pod uwagę, przesłaniając poprzednią kontrolę.--roll-forward
parametr przekazany do uruchomionej aplikacji zastępuje wszystkie inne elementy.Jednak ustawisz ustawienie wycofywania, użyj jednej z następujących wartości, aby ustawić zachowanie:
Wartość | Opis |
---|---|
Minor |
Wartość domyślna , jeśli nie zostanie określona. Przerzuć do najniższej wyższej wersji pomocniczej, jeśli brakuje żądanej wersji pomocniczej. Jeśli żądana wersja pomocnicza jest obecna, LatestPatch zostaną użyte zasady. |
Major |
Przejdź do następnej dostępnej nowszej wersji głównej i najniższej wersji pomocniczej, jeśli zażądano wersji głównej. Jeśli żądana wersja główna jest obecna, Minor zostaną użyte zasady. |
LatestPatch |
Przerzuć do najwyższej wersji poprawki. Ta wartość wyłącza wycofywanie wersji pomocniczej. |
LatestMinor |
Przerzuć do najwyższej wersji pomocniczej, nawet jeśli zażądano wersji pomocniczej. |
LatestMajor |
Przerzuć do najwyższej wersji głównej i najwyższej wersji pomocniczej, nawet jeśli zażądano wersji głównej. |
Disable |
Nie przesyłaj dalej, powiąż tylko z określoną wersją. Te zasady nie są zalecane do użytku ogólnego, ponieważ wyłącza możliwość przekazywania do najnowszych poprawek. Ta wartość jest zalecana tylko do testowania. |
Aplikację można opublikować jako samodzielną dystrybucję. Takie podejście łączy środowisko uruchomieniowe i biblioteki platformy .NET z aplikacją. Wdrożenia samodzielne nie mają zależności od środowisk uruchomieniowych. Wybór wersji środowiska uruchomieniowego odbywa się w czasie publikowania, a nie w czasie wykonywania.
Zdarzenie przywracania występujące podczas publikowania wybiera najnowszą wersję poprawki danej rodziny środowiska uruchomieniowego. Na przykład wybierze platformę .NET 5.0.3, dotnet publish
jeśli jest to najnowsza wersja poprawki w rodzinie środowiska uruchomieniowego platformy .NET 5. Platforma docelowa (w tym najnowsze zainstalowane poprawki zabezpieczeń) jest spakowana z aplikacją.
Błąd występuje, jeśli minimalna wersja określona dla aplikacji nie jest zgodna. dotnet publish
wiąże się z najnowszą wersją poprawki środowiska uruchomieniowego (w ramach danej rodziny wersji głównej.pomocniczej). dotnet publish
nie obsługuje semantyki rzutowania elementu dotnet run
. Aby uzyskać więcej informacji na temat poprawek i wdrożeń samodzielnie zawartych, zobacz artykuł dotyczący wyboru poprawek środowiska uruchomieniowego w wdrażaniu aplikacji platformy .NET.
Wdrożenia samodzielne mogą wymagać określonej wersji poprawki. W pliku projektu można zastąpić minimalną wersję poprawki środowiska uruchomieniowego (do wyższych lub niższych wersji), jak pokazano w poniższym przykładzie:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Element RuntimeFrameworkVersion
zastępuje domyślne zasady wersji. W przypadku wdrożeń RuntimeFrameworkVersion
samodzielnie określa dokładną wersję struktury środowiska uruchomieniowego. W przypadku aplikacji RuntimeFrameworkVersion
zależnych od platformy określa minimalną wymaganą wersję platformy uruchomieniowej.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię:
Szkolenie
Moduł
Publish an ASP.NET Core app - Training
Learn how to publish an ASP.NET Core app for deployment to a web server or cloud service.