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.
Acción recomendada
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
atrue
en el archivo del proyecto.<PropertyGroup> <UseRidGraph>true</UseRidGraph> </PropertyGroup>
Las APIs afectadas
Ninguno.