RID padrão usado ao direcionar para o .NET Framework
No .NET 8, uma alteração foi introduzida para usar um grafo de RID (identificador de runtime) menor ao se direcionar para o net8.0
e versões posteriores.
No entanto, isso prejudicou os clientes que desenvolvem para múltiplas plataformas do .NET e do .NET Framework. Isso ocorre porque a restauração acontece uma vez, mas o projeto do .NET Framework tenta usar o padrão RID antigo e o projeto .NET (Core) tenta usar o novo grafo RID reduzido.
Para habilitar esse cenário de vários destinos, um RID padrão compatível com o novo grafo RID agora é usado nesse cenário.
Versão introduzida
Disponibilidade geral do .NET 9
Comportamento anterior
Projetos no estilo SDK direcionados ao .NET Framework, sem um RID configurado, usavam o padrão win7-x86
ou win7-x64
.
Novo comportamento
Projetos no estilo SDK direcionados ao .NET Framework sem definir um RID, por padrão, usam win-x86
ou win-x64
.
Tipo de alteração interruptiva
Essa alteração pode afetar a compatibilidade da origem.
Motivo da alteração
Os aplicativos do .NET Framework estavam recebendo um RID padrão incompatível com o grafo RID portátil. Essa incompatibilidade resultou em um erro de restauração:
Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): erro NETSDK1047: O arquivo de ativos 'D:\1\s\artifacts\obj\MSBuild\project.assets.json' não tem um destino para 'net472/win7-x64'. Verifique se a restauração foi executada e se você incluiu 'net472' no TargetFrameworks para seu projeto. Talvez você também precise incluir 'win7-x64' nos RuntimeIdentifiers do projeto. [MSBuild.csproj::TargetFramework=net472]>
Para obter mais informações, consulte dotnet/sdk issue #35575.
Ação recomendada
Se você for afetado por essa alteração, escolha uma das seguintes ações:
Atualize o identificador de runtime para um valor compatível com o grafo RID portátil. Exemplo de arquivo de projeto:
<PropertyGroup> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup>
Se você especificar o RID como um argumento de linha de comando, faça uma alteração semelhante. Por exemplo,
dotnet publish --runtime win-x64
.Volte para o grafo RID antigo definindo
UseRidGraph
paratrue
no arquivo de projeto:<PropertyGroup> <UseRidGraph>true</UseRidGraph> </PropertyGroup>
APIs afetadas
Nenhum.