Partilhar via


RID padrão usado ao direcionar o .NET Framework

No .NET 8, foi introduzida uma alteração para usar uma grafia de identificador de tempo de execução (RID) menor ao almejar net8.0 e versões posteriores.

No entanto, isso causou problemas para os clientes que trabalham com múltiplas plataformas no .NET e .NET Framework. Isso ocorre porque a restauração acontece uma vez, mas o projeto .NET Framework tenta usar o padrão RID antigo e o projeto .NET (Core) tenta usar o novo gráfico RID reduzido.

Para habilitar este cenário de multi-alvo, um RID padrão compatível com o novo gráfico RID agora está a ser utilizado neste cenário.

Versão introduzida

.NET 9 GA

Comportamento anterior

Projetos no estilo SDK destinados ao .NET Framework sem RID definido padronizados como win7-x86 ou win7-x64.

Novo comportamento

Projetos no estilo SDK destinados ao .NET Framework sem RID definem como padrão win-x86 ou win-x64.

Tipo de mudança de rutura

Essa alteração pode afetar compatibilidade da fonte.

Motivo da mudança

Os aplicativos .NET Framework estavam recebendo um RID padrão que era incompatível com o gráfico 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 ficheiro de recursos 'D:\1\s\artifacts\obj\MSBuild\project.assets.json' não possui um alvo para 'net472/win7-x64'. Certifique-se de que a restauração foi executada e que você incluiu 'net472' no TargetFrameworks para seu projeto. Você também pode precisar incluir 'win7-x64' nos RuntimeIdentifiers do seu 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 seu identificador de tempo de execução para um valor suportado pelo gráfico 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 gráfico RID antigo definindo UseRidGraph para true no arquivo de projeto:

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

APIs afetadas

Nenhuma.