Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
.NET 10 zavádí AsyncEnumerable třídu, která poskytuje úplnou sadu metod rozšíření LINQ pro typ IAsyncEnumerable<T> . Tato třída nahrazuje knihovnu NuGet spravovanou System.Linq.Async komunitou, což může způsobit chyby kompilace z důvodu nejednoznačností.
Verze byla představena
.NET 10
Předchozí chování
AsyncEnumerable Dříve třída v balíčku udržovaném System.Linq.Async komunitou poskytovala podporu LINQ pro IAsyncEnumerable<T>.
Nové chování
Třída AsyncEnumerable v .NET 10 a v System.Linq.AsyncEnumerable balíčku NuGet poskytuje podporu LINQ pro IAsyncEnumerable<T>.
Typ zásadní změny
Tato změna může mít vliv na kompatibilitu zdroje.
Důvod změny
IAsyncEnumerable<T> je běžně používané rozhraní, takže samotná platforma by měla poskytovat podporu LINQ pro typ. Správci System.Linq.Async a další členové komunity požádali o začlenění přímo do platformy.
Doporučená akce
Pokud upgradujete na .NET 10 a váš kód obsahuje přímý odkaz na System.Linq.Asyncbalíček, odeberte tento odkaz na balíček nebo upgradujte na verzi 7.0.0. Místo toho přidejte odkaz na balíček pro multitargeting jak na .NET 10, tak na předchozí verzi.
Pokud System.Linq.Async se využívá nepřímo prostřednictvím jiného balíčku, vyhněte se nejednoznačným chybám přidáním <ExcludeAssets> metadat s hodnotou compile nebo all:
Chcete-li povolit tranzitivní použití
System.Linq.Async, nastavte<ExcludeAssets>nacompile:<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>compile</ExcludeAssets> </PackageReference>Tato konfigurace brání přímému použití v kódu a umožňuje ostatním balíčkům interně používat System.Linq.Async.
Pro úplné vyloučení nastavte
<ExcludeAssets>naall.<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>all</ExcludeAssets> </PackageReference>Tuto konfiguraci použijte pouze v případě, že jste si jisti, že žádné závislosti nevyžadují System.Linq.Async v době běhu.
Většina kódu by měla být kompatibilní bez změn, ale některá místa volání mohou potřebovat aktualizace, aby odkazovala na novější názvy a signatury. Například volání funkce Select jako e.Select(i => i * 2) funguje stejně před i po. Volání e.SelectAwait(async (int i, CancellationToken ct) => i * 2) však musí být změněno tak, aby se používalo Select místo SelectAwait, jako v e.Select(async (int i, CancellationToken ct) => i * 2).
Úplnou sadu dostupných rozšiřujících metod IAsyncEnumerable<T>LINQ naleznete v dokumentaci k rozhraní API System.Linq.AsyncEnumerable.