Przenoszenie do przodu w czasie samodzielnego środowiska uruchomieniowego wdrożenia

Wdrożenia aplikacji samodzielnej platformy .NET Core obejmują zarówno biblioteki .NET Core, jak i środowisko uruchomieniowe platformy .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 określenie -r <RID> polecenia dotnet publish lub określenie identyfikatora środowiska uruchomieniowego (RID) w pliku projektu (csproj / vbproj) lub w wierszu polecenia.

Omówienie wprowadzania wersji poprawek

restorei buildpublish to dotnet polecenia, które mogą być uruchamiane oddzielnie. Wybór środowiska uruchomieniowego jest częścią restore operacji, a nie publish .build Jeśli wywołasz publishmetodę , zostanie wybrana najnowsza wersja poprawki. Jeśli wywołasz publish argument z argumentem --no-restore , być może nie otrzymasz żądanej wersji poprawki, ponieważ poprzednia restore wersja mogła nie zostać wykonana z nowymi własnymi zasadami publikowania aplikacji. 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

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) niejawne restore pakiety przywracania 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 może być niepożądane w twoim scenariuszu publish . Aby uniknąć restore podczas publish tworzenia aplikacji samodzielnie, wykonaj następujące czynności:

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

Argument no-restore z opcjami publikowania 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ć niesprawnego lokalnego środowiska uruchomieniowego w wersji 2.1.0, ustaw wartość TargetLatestRuntimePatch na false wartość 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 jawną kontrolę nad wersją struktury środowiska uruchomieniowego, ustawiając RuntimeFrameworkVersion konkretną wersję poprawki w pliku projektu.