Udostępnij za pomocą


Samodzielne środowisko uruchomieniowe z możliwością przesunięcia wersji wdrożenia naprzód

Wdrożenia samodzielnych aplikacji .NET Core obejmują zarówno biblioteki .NET Core, jak i środowisko uruchomieniowe .NET Core. Począwszy od zestawu .NET Core 2.1 SDK (wersja 2.1.300), samodzielne wdrożenie aplikacji publikuje na maszynie najwyższe środowisko uruchomieniowe poprawek. Domyślnie dotnet publish w przypadku wdrożenia samodzielnego wybiera najnowszą wersję zainstalowaną jako część zestawu SDK na maszynie publikowania. Dzięki temu wdrożona aplikacja może działać z poprawkami zabezpieczeń (i innymi poprawkami) dostępnymi podczas wykonywania polecenia publish. Aby uzyskać nową poprawkę, należy ponownie opublikować aplikację. Aplikacje samodzielne są tworzone przez podanie -r <RID> na polecenie dotnet publish lub podanie identyfikatora środowiska uruchomieniowego (RID) w pliku projektu (csproj / vbproj) lub w wierszu polecenia.

Omówienie wprowadzania wersji poprawek

restore, build i publish to dotnet polecenia, które mogą być uruchamiane oddzielnie. Wybór środowiska uruchomieniowego jest częścią operacji restore, a nie publish lub build. Jeśli wywołasz publish, zostanie wybrana najnowsza wersja poprawki. Jeśli wywołasz publish z argumentem --no-restore, być może nie otrzymasz żądanej wersji poprawki, ponieważ wcześniejsze restore mogło nie zostać przeprowadzone zgodnie z nową polityką publikowania aplikacji z samodzielnym pakietem. W takim przypadku zostanie wygenerowany błąd kompilacji z tekstem podobnym do następującego:

"Projekt został przywrócony przy użyciu Microsoft.NETCore.App w wersji 2.0.0, ale w przypadku bieżących ustawień zamiast tego będzie używana wersja 2.0.6. Aby rozwiązać ten problem, upewnij się, że te same ustawienia są używane do przywracania i kolejnych operacji, takich jak kompilacja lub publikowanie. Zazwyczaj ten problem może wystąpić, jeśli właściwość RuntimeIdentifier jest ustawiona podczas kompilacji lub publikowania, ale nie podczas przywracania.

Uwaga / Notatka

restore i build można uruchomić niejawnie w ramach innego polecenia, takiego jak publish. W przypadku niejawnego uruchamiania w ramach innego polecenia są one dostarczane z dodatkowym kontekstem, dzięki czemu tworzone są odpowiednie artefakty. W przypadku publish środowiska uruchomieniowego (na przykład dotnet publish -r linux-x64) niejawnie przywracane są pakiety dla środowiska uruchomieniowego linux-x64. Jeśli wywołasz restore jawnie, nie przywraca domyślnie pakietów środowiska uruchomieniowego, ponieważ nie ma tego kontekstu.

Jak uniknąć przywracania podczas publikowania

Uruchomienie restore w ramach operacji publish może być niepożądane dla twojego scenariusza. Aby uniknąć restore podczas publish tworzenia aplikacji autonomicznych, postępuj następująco:

  • Ustaw właściwość RuntimeIdentifiers na listę wszystkich RID rozdzieloną średnikami do opublikowania.
  • Ustaw właściwość TargetLatestRuntimePatch na wartość true.

Argument no-restore z opcjami publikacji dla dotnet

Jeśli chcesz utworzyć zarówno aplikacje samodzielne, jak i aplikacje zależne od platformy z tym samym plikiem projektu i chcesz użyć argumentu --no-restore z elementem dotnet publish, wybierz jedną z następujących opcji:

  1. Preferuj zachowanie zależne od platformy. Jeśli aplikacja jest zależna od struktury, jest to zachowanie domyślne. Jeśli aplikacja jest samodzielna i może używać niezałatanego lokalnego środowiska uruchomieniowego w wersji 2.1.0, ustaw TargetLatestRuntimePatch na false w pliku projektu.

  2. Preferuj zachowanie samodzielne. Jeśli aplikacja jest samodzielna, jest to zachowanie domyślne. Jeśli aplikacja jest zależna od struktury i wymaga zainstalowanej najnowszej poprawki, ustaw ją TargetLatestRuntimePatch na true w pliku projektu.

  3. Przejmij pełną kontrolę nad wersją środowiska uruchomieniowego, ustawiając RuntimeFrameworkVersion na konkretną wersję poprawki w pliku projektu.