RuntimeIdentifier automático para determinados proyectos

Los proyectos que especifican cualquiera de las siguientes propiedades ahora obtienen automáticamente un identificador en tiempo de ejecución (RID). Un RID permite publicar una implementación autocontenida.

  • SelfContained
  • PublishAot
  • PublishReadyToRun
  • PublishSingleFile
  • PublishSelfContained (Solo SDK de .NET 7.0.200 y versiones posteriores)

Los siguientes proyectos podrían verse afectados por este cambio:

  • Proyectos antiguos que eludían el error de la ausencia del identificador en tiempo de ejecución.
  • Proyectos que tienen RuntimeIdentifiers, pero no RuntimeIdentifier.
  • Proyectos que usan rutas de acceso codificadas de forma rígida sin RID.
  • Proyectos que tenían estas propiedades, pero usaban una compilación en lugar de una publicación y aceptaban que la publicación estuviera en un estado incorrecto.

Hay otros matices potenciales que podrían generar errores en situaciones individuales que aún desconocemos.

Nota

Este cambio estaba restringido al comando dotnet publish en el SDK de .NET 7.0.200. Para obtener más información, consulte RuntimeIdentifier automático para solo publicación.

Versión introducida

.NET 7

Comportamiento anterior

Anteriormente, estos proyectos no se publicaban con errores como:

No se admite la publicación de una aplicación en un único archivo sin especificar un objeto RuntimeIdentifier. Especifique un objeto RuntimeIdentifier o establezca PublishSingleFile en false.

O BIEN

Error NETSDK1031: No se admite la compilación ni publicación de una aplicación independiente sin especificar un valor para RuntimeIdentifier. Debe especificar un valor para RuntimeIdentifier o establecer SelfContained en false.

En algunos casos, como PublishSingleFile o con lógica especial RuntimeIdentifiers, es posible que los proyectos se hayan compilado correctamente sin RuntimeIdentifier.

Comportamiento nuevo

Los proyectos que especifican cualquiera de las propiedades enumeradas al principio de este artículo obtienen automáticamente RuntimeIdentifier. Este nuevo comportamiento puede provocar errores de compilación en proyectos que dependen de RuntimeIdentifiers, pero no RuntimeIdentifier, ya que RuntimeIdentifier puede afectar a la ruta de acceso de salida de forma distinta de RuntimeIdentifiers. También puede provocar errores en proyectos AnyCPU que dependen de PublishSingleFile, pero que no siempre proporcionan RuntimeIdentifier al realizar otras acciones. Estos errores pueden aparecer de la siguiente manera:

El proceso de destino salió sin generar un evento iniciado de CoreCLR. Asegúrese de que el proceso de destino está configurado para usar .NET Core.

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad de orígenes.

Motivo del cambio

La mayoría de los proyectos de .NET no pueden publicarse con las propiedades mencionadas sin establecer RuntimeIdentifier. Este cambio reduce la necesidad de agregar el RID manualmente cada vez que use las propiedades mencionadas.

Si el proyecto se ve afectado, puede deshabilitar el RuntimeIdentifier automático agregando <UseCurrentRuntimeIdentifier>false</UseCurrentRuntimeIdentifier> al archivo del proyecto.

Si se produce una interrupción debido al cambio de la ruta de acceso de salida, agregue <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> al archivo del proyecto.

Consulte también