Udostępnij przez


Automatyczny identyfikator środowiska uruchomieniowego dla niektórych projektów

Projekty, które określają dowolną z poniższych właściwości, teraz automatycznie otrzymują identyfikator środowiska uruchomieniowego (RID). Identyfikator RID umożliwia publikowanie wdrożenia niezależnego.

  • SelfContained
  • PublishAot
  • PublishReadyToRun
  • PublishSingleFile
  • PublishSelfContained (Tylko wersje zestawu .NET SDK 7.0.200 i nowszych)

Ta zmiana może mieć wpływ na następujące projekty:

  • Stare projekty, które obejśły błąd brakującego identyfikatora środowiska uruchomieniowego.
  • Projekty, które mają RuntimeIdentifiers , ale nie RuntimeIdentifier.
  • Projekty, które korzystają z zakodowanych na stałe ścieżek bez identyfikatorów środowiska uruchomieniowego.
  • Projekty, które miały te właściwości, ale używały kompilacji zamiast publikacji, akceptując publikację w stanie uszkodzenia.

Istnieją inne potencjalne niuanse, które mogą wpłynąć na indywidualne sytuacje, o których jeszcze nie jesteśmy świadomi.

Uwaga / Notatka

Zmiana była ograniczona do polecenia dotnet publish w pakiecie SDK .NET 7.0.200. Aby uzyskać więcej informacji, zobacz Automatic RuntimeIdentifier for publish only (Automatyczne środowisko uruchomienioweIdentifier tylko do publikowania).

Wersja wprowadzona

.NET 7

Poprzednie zachowanie

Wcześniej publikowanie tych projektów nie powiodło się z powodu błędów, takich jak:

Publikowanie aplikacji w jednym pliku nie jest obsługiwane bez określania identyfikatora RuntimeIdentifier. Proszę albo określić parametr RuntimeIdentifier, albo ustawić parametr PublishSingleFile na false.

LUB

błąd NETSDK1031: Nie jest obsługiwane kompilowanie ani publikowanie aplikacji samodzielnej bez określania elementu RuntimeIdentifier. Musisz określić wartość RuntimeIdentifier lub ustawić wartość SelfContained na false.

W niektórych przypadkach, takich jak PublishSingleFile lub ze specjalną RuntimeIdentifiers logiką, projekty mogły zostać utworzone pomyślnie bez elementu RuntimeIdentifier.

Nowe zachowanie

Projekty, które określają dowolne właściwości wymienione na początku tego artykułu, otrzymują automatycznie RuntimeIdentifier. To nowe zachowanie może powodować błędy kompilacji w projektach, które są zależne od RuntimeIdentifiers, ale nie RuntimeIdentifier, ponieważ RuntimeIdentifier może wpływać na ścieżkę wyjściową odmiennie od RuntimeIdentifiers. Może również powodować błędy w AnyCPU projektach, które na PublishSingleFile polegają, ale nie zawsze dają RuntimeIdentifier w trakcie podejmowania innych akcji. Te błędy mogą być wyświetlane w następujący sposób:

Proces docelowy zakończył się bez wygenerowania zdarzenia rozpoczęcia CoreCLR. Upewnij się, że proces docelowy jest skonfigurowany do używania platformy .NET Core.

Typ zmiany przełamującej

Ta zmiana może mieć wpływ na zgodność źródła .

Przyczyna zmiany

Większość projektów .NET nie udaje się opublikować przy użyciu wymienionych właściwości bez ustawienia RuntimeIdentifier. Ta zmiana zmniejsza konieczność ręcznego dodawania identyfikatora RID za każdym razem, gdy używasz wymienionych właściwości.

Jeśli projekt jest tym dotknięty, możesz wyłączyć automatyczne RuntimeIdentifier poprzez dodanie <UseCurrentRuntimeIdentifier>false</UseCurrentRuntimeIdentifier> do pliku projektu.

Jeśli napotkasz problem z powodu zmiany ścieżki wyjściowej, dodaj <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> do pliku projektu.

Zobacz także