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.
Ação recomendada
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>