O SDK do .NET usa um grafo RID menor

Os projetos destinados ao .NET 8 ou versões posteriores agora usam um grafo identificador de runtime (RID) 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 alteração interruptiva

Essa alteração é uma alteração de comportamento e também pode afetar a compatibilidade da 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 do RID, parar de lê-lo e, com o tempo, removê-lo por completo. Essa alteração interruptiva é um passo em direção a essa meta.

Use RIDs portáteis, por exemplo, linux-<arch>, linux-musl-<arch>, osx-<arch> e 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> no 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-x64, use o comando dotnet publish --framework net8.0 --runtime win-x64.

Se você precisar reverter para o comportamento anterior de usar o grafo RID antigo e completo, poderá definir a propriedade MSBuild UseRidGraph como true no arquivo de projeto. 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>

Confira também