Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O .NET 10 apresenta a AsyncEnumerable classe, que fornece um conjunto completo de métodos de extensão LINQ para o IAsyncEnumerable<T> tipo. Essa classe substitui a biblioteca NuGet mantida pela System.Linq.Async comunidade, potencialmente causando erros de compilação devido a ambiguidades.
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, a AsyncEnumerable classe no pacote mantido System.Linq.Async pela comunidade forneceu suporte linq para IAsyncEnumerable<T>.
Novo comportamento
A AsyncEnumerable classe no .NET 10 e no System.Linq.AsyncEnumerable pacote NuGet fornece suporte a LINQ para IAsyncEnumerable<T>.
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade do código-fonte.
Motivo da alteração
IAsyncEnumerable<T> é uma interface comumente usada, portanto, a própria plataforma deve fornecer suporte linq para o tipo. Os mantenedores de System.Linq.Async e outros membros da comunidade pediram incluir diretamente na plataforma.
Ação recomendada
Se você estiver atualizando para o .NET 10 e seu código incluir uma referência de pacote direto ao System.Linq.Async, remova essa referência de pacote ou atualize para a versão 7.0.0. Para fazer multitargeting tanto do .NET 10 quanto de uma versão anterior, adicione uma referência de pacote em vez disso.System.Linq.AsyncEnumerable
Se System.Linq.Async for consumido indiretamente por meio de outro pacote, evite erros de ambiguidade adicionando <ExcludeAssets> metadados com um valor de compile ou all:
Para permitir o uso transitivo de
System.Linq.Async, defina<ExcludeAssets>comocompile:<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>compile</ExcludeAssets> </PackageReference>Essa configuração impede o uso direto em seu código, permitindo que outros pacotes continuem usando System.Linq.Async internamente.
Para exclusão completa, defina
<ExcludeAssets>comoall:<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>all</ExcludeAssets> </PackageReference>Use essa configuração somente se você tiver certeza de que nenhuma dependência exigirá System.Linq.Async em runtime.
O código mais consumido deve ser compatível sem alterações, mas alguns sites de chamadas podem precisar de atualizações para se referir a nomes e assinaturas mais recentes. Por exemplo, uma Select chamada como e.Select(i => i * 2) funciona da mesma forma antes e depois. No entanto, a chamada e.SelectAwait(async (int i, CancellationToken ct) => i * 2) precisa ser alterada para ser usada Select em vez de SelectAwait, como em e.Select(async (int i, CancellationToken ct) => i * 2).
Para obter o conjunto completo de métodos de extensão LINQ disponíveis, IAsyncEnumerable<T>consulte a documentação da API System.Linq.AsyncEnumerable.