Compartilhar via


O SDK do .NET usa um grafo RID menor

Os projetos destinados ao .NET 8 ou versões posteriores agora usam um grafo rid (identificador de runtime) menor e "portátil".

Comportamento anterior

O SDK do .NET usou um grafo RID complexo para determinar ativos ao criar ou publicar um projeto.

Novo comportamento

A partir do .NET 8, o SDK do .NET usa um grafo menor que consiste apenas em RIDs portáteis, para projetos direcionados ao .NET 8 ou a uma versão posterior. Isso significa que o SDK não reconhecerá RIDs específicos da versão ou específicos da distribuição por padrão. Você pode ver o seguinte erro (ou semelhante) ao compilar seu projeto:

erro NETSDK1083: o RuntimeIdentifier especificado 'win10-x64' não é reconhecido. Consulte https://aka.ms/netsdk1083 para obter mais informações.

Versão introduzida

.NET 8 RC 1

Tipo de mudança disruptiva

Essa alteração é uma alteração comportamental e também pode afetar a compatibilidade do código-fonte.

Motivo da alteração

O grafo do RID era caro de manter e entender, exigindo que o próprio .NET tivesse o reconhecimento de distribuição de maneira frágil. A equipe do .NET e a comunidade gastam uma quantidade de tempo significativa atualizando o grafo e trabalhando na portabilidade dessas atualizações para versões anteriores. A meta de longo prazo é parar de atualizar o grafo RID, parar de lê-lo e, eventualmente, removê-lo. Essa alteração significativa é um passo em direção a esse objetivo.

Use RIDs portáteis, por exemplo, linux-<arch>, linux-musl-<arch>e osx-<arch>win-<arch>, em vez de RIDs específicos da versão ou específicos da distribuição, como ubuntu.16.04-<arch>, osx.10.11-<arch>e win10-<arch>.

Se você especificar o RID usando a propriedade RuntimeIdentifier MSBuild no arquivo de projeto (*.csproj, *.vbproj ou *.fsproj), altere-o adequadamente. Por exemplo, altere <RuntimeIdentifier>win10-x64</RuntimeIdentifier> para <RuntimeIdentifier>win-x64</RuntimeIdentifier> o 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, em vez de dotnet publish --framework net8.0 --runtime win10-x64usar o comando dotnet publish --framework net8.0 --runtime win-x64.

Se você precisar reverter para o comportamento anterior de usar o gráfico RID antigo e completo, poderá definir a propriedade MSBuild no arquivo de projeto para UseRidGraph. No entanto, o grafo RID antigo não será atualizado no futuro para tentar lidar com outras distribuições ou arquiteturas.

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

Consulte também