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 noRuntimeIdentifier
. - 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.
Acción recomendada
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de