Compartilhar via


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.

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 para true no arquivo de projeto:

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

APIs afetadas

Nenhum.