O SDK do .NET usa um gráfico RID menor

Projetos destinados ao .NET 8 ou versões posteriores agora usam um gráfico menor de identificador de tempo de execução (RID) "portátil".

Comportamento anterior

O SDK .NET usou um gráfico RID complexo para determinar ativos ao criar ou publicar um projeto.

Novo comportamento

A partir do .NET 8, o SDK do .NET usa um gráfico menor que consiste apenas em RIDs portáteis, para projetos destinados ao .NET 8 ou a uma versão posterior. Isso significa que o SDK não reconhecerá RIDs específicos da versão ou da distribuição por padrão. Você pode ver o seguinte erro (ou semelhante) ao criar 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 de rutura

Esta alteração é uma mudança comportamental e também pode afetar a compatibilidade da fonte.

Razão para a alteração

O gráfico RID era caro para manter e entender, exigindo que o próprio .NET estivesse ciente da distro de uma maneira frágil. A equipe do .NET e a comunidade gastam uma quantidade não trivial de tempo atualizando o gráfico e fazendo backporting dessas atualizações para versões anteriores. O objetivo a longo prazo é parar de atualizar o gráfico RID, parar de lê-lo e, eventualmente, removê-lo. Esta mudança revolucionária é um passo em direção a esse objetivo.

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

Se você especificar o RID usando a propriedade RuntimeIdentifier MSBuild em seu arquivo de projeto (*.csproj, *.vbproj ou *.fsproj), altere-o de acordo. Por exemplo, altere <RuntimeIdentifier>win10-x64</RuntimeIdentifier> para no arquivo de <RuntimeIdentifier>win-x64</RuntimeIdentifier> 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 gráfico RID antigo e completo, você pode definir a UseRidGraph propriedade MSBuild como true em seu arquivo de projeto. No entanto, o gráfico 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