El SDK de .NET usa un gráfico RID más pequeño

Los proyectos que tienen como destino .NET 8 o versiones posteriores ahora usan un gráfico de identificador en tiempo de ejecución (RID) más pequeño y "portátil".

Comportamiento anterior

El SDK de .NET usaba un gráfico RID complejo para determinar los recursos al compilar o publicar un proyecto.

Comportamiento nuevo

A partir de .NET 8, el SDK de .NET usa un gráfico más pequeño que consta solo de RID portátiles, para proyectos que tienen como destino .NET 8 o una versión posterior. Esto significa que el SDK no reconocerá los RID específicos de la versión ni los específicos de la distribución de manera predeterminada. Es posible que vea el siguiente error (o similar) al compilar el proyecto:

Error NETSDK1083: no se reconoce el valor de RuntimeIdentifier "win10-x64" especificado. Vea https://aka.ms/netsdk1083 para más información.

Versión introducida

.NET 8 RC 1

Tipo de cambio importante

Esto es un cambio de comportamiento y también puede afectar a la compatibilidad de origen.

Motivo del cambio

El grafo de RID era costoso de mantener y comprender, y requería que el propio .NET fuera compatible con la distribución de una manera frágil. El equipo de .NET y la comunidad dedican una cantidad de tiempo no trivial a actualizar el grafo y volver a importar dichas actualizaciones a versiones anteriores. El objetivo a largo plazo es detener la actualización del grafo de RID, dejar de leerlo y, finalmente, quitarlo. Este cambio importante es un paso hacia ese objetivo.

Use RID portables, por ejemplo, linux-<arch>, linux-musl-<arch>, osx-<arch> y win-<arch>, en lugar de RID específicos de la versión o específicos de la distribución, como ubuntu.16.04-<arch>, osx.10.11-<arch> y win10-<arch>.

Si especifica el RID mediante la propiedad RuntimeIdentifier de MSBuild en el archivo del proyecto (*.csproj, *.vbproj o *.fsproj), cámbielo en consecuencia. Por ejemplo, cambie <RuntimeIdentifier>win10-x64</RuntimeIdentifier> a <RuntimeIdentifier>win-x64</RuntimeIdentifier> en el archivo del proyecto:

<PropertyGroup>
  ...
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

Si especifica RID como argumento de línea de comandos, realice un cambio similar. Por ejemplo, en lugar de dotnet publish --framework net8.0 --runtime win10-x64, use el comando dotnet publish --framework net8.0 --runtime win-x64.

Si necesita revertir al comportamiento anterior, que supone usar el gráfico RID completo antiguo, puede establecer la propiedad de MSBuild UseRidGraph en true en el archivo del proyecto. Pero el gráfico RID antiguo no se actualizará en el futuro para intentar controlar otras distribuciones o arquitecturas.

<PropertyGroup>
  <UseRidGraph>true</UseRidGraph>
</PropertyGroup>

Consulte también