Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
.NET 10 introducerar AsyncEnumerable klassen, som innehåller en fullständig uppsättning LINQ-tilläggsmetoder för IAsyncEnumerable<T> typen. Den här klassen ersätter det community-underhållna System.Linq.Async NuGet-biblioteket, vilket kan orsaka kompileringsfel på grund av tvetydigheter.
Version lanserad
.NET 10
Tidigare beteende
AsyncEnumerable Tidigare tillhandahöll klassen i det gemenskaps-underhållna System.Linq.Async paketet LINQ-stöd för IAsyncEnumerable<T>.
Nytt beteende
Klassen AsyncEnumerable i .NET 10 och i System.Linq.AsyncEnumerable NuGet-paketet tillhandahåller LINQ-stöd för IAsyncEnumerable<T>.
Typ av brytande ändring
Den här ändringen kan påverka källkompatibiliteten.
Orsak till ändring
IAsyncEnumerable<T> är ett vanligt gränssnitt, så själva plattformen bör ge LINQ-stöd för typen. Underhållare av System.Linq.Async och andra gemenskapsmedlemmar ansökte om att få bli inkluderade direkt i plattformen.
Rekommenderad åtgärd
Om du uppgraderar till .NET 10 och koden innehåller en direkt paketreferens till System.Linq.Asynctar du bort paketreferensen. För multitargeting av både .NET 10 och en tidigare version lägger du till en paketreferens i System.Linq.AsyncEnumerable stället.
Om System.Linq.Async används indirekt via ett annat paket kan du undvika tvetydighetsfel genom att lägga till <ExcludeAssets> metadata med värdet compile eller all:
Om du vill tillåta transitiv användning av
System.Linq.Asyncanger du<ExcludeAssets>tillcompile:<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>compile</ExcludeAssets> </PackageReference>Den här konfigurationen förhindrar direkt användning i koden samtidigt som andra paket kan fortsätta att använda System.Linq.Async internt.
För fullständig exkludering anger du
<ExcludeAssets>tillall:<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>all</ExcludeAssets> </PackageReference>Använd endast den här konfigurationen om du är säker på att inga beroenden kräver System.Linq.Async vid körning.
Den mest använda koden bör vara kompatibel utan ändringar, men vissa anropswebbplatser kan behöva uppdateringar för att referera till nyare namn och signaturer. Till exempel kommer ett anrop som Select fungera på samma sätt före och efter som e.Select(i => i * 2). Anropet e.SelectAwait(async (int i, CancellationToken ct) => i * 2) måste dock ändras för att kunna användas Select i stället för SelectAwait, som i e.Select(async (int i, CancellationToken ct) => i * 2).
Se dokumentationen för System.Linq.AsyncEnumerable API för den fullständiga uppsättningen LINQ-tilläggsmetoder som är tillgängliga för IAsyncEnumerable<T>.
Berörda API:er
- System.Linq.AsyncEnumerable
- System.Collections.Generic.IAsyncEnumerable<T>
- System.Linq.Async-paketet (underhålls av gemenskapen)