Compartir vía


RID predeterminado que se usa al establecer como destino .NET Framework

En .NET 8, se introdujo un cambio en para usar un gráfico de identificador de entorno de ejecución (RID) más pequeño al apuntar a net8.0 y versiones posteriores.

Sin embargo, esto causó problemas a los clientes que trabajan con múltiples objetivos en .NET y .NET Framework. Esto se debe a que la restauración se produce una vez, pero el proyecto de .NET Framework intenta usar el valor predeterminado de RID antiguo y el proyecto de .NET (Core) intenta usar el nuevo gráfico rid reducido.

Para habilitar este escenario de varios destinos, ahora se usa un RID predeterminado compatible con el nuevo grafo RID.

Versión introducida

DISPONIBILIDAD GENERAL DE .NET 9

Comportamiento anterior

Proyectos de estilo SDK que tenían como destino .NET Framework sin establecer un RID, que por defecto se configuraban en win7-x86 o win7-x64.

Nuevo comportamiento

Proyectos de estilo SDK que tienen como destino .NET Framework sin RID establecido de forma predeterminada en win-x86 o win-x64.

Tipo de cambio disruptivo

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

Motivo del cambio

Las aplicaciones de .NET Framework obtenían un RID predeterminado que no era compatible con el grafo RID portátil. Esa incompatibilidad produjo un error de restauración:

Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): error NETSDK1047: el archivo de activos "D:\1\s\artifacts\obj\MSBuild\project.assets.json" no tiene un destino para "net472/win7-x64". Asegúrese de que la restauración se ha ejecutado y que ha incluido "net472" en TargetFrameworks para el proyecto. También es posible que tenga que incluir "win7-x64" en los RuntimeIdentifiers del proyecto. [MSBuild.csproj::TargetFramework=net472]>

Para más información, consulte la dotnet/sdk issue #35575.

Si se ve afectado por este cambio, elija una de las siguientes acciones:

  • Actualice el identificador en tiempo de ejecución a un valor compatible con el gráfico RID portátil. Ejemplo de archivo de proyecto:

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

    Si especifica el RID como argumento de línea de comandos, realice un cambio similar. Por ejemplo, dotnet publish --runtime win-x64.

  • Vuelva al gráfico RID antiguo cambiando UseRidGraph a true en el archivo del proyecto.

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

Las APIs afectadas

Ninguno.