.NET 10에서는 AsyncEnumerable 클래스를 도입하여 IAsyncEnumerable<T> 형식에 대한 LINQ 확장 메서드의 전체 집합을 제공합니다. 이 클래스는 커뮤니티에서 유지 관리하는 System.Linq.Async NuGet 라이브러리를 대체하여 모호성으로 인해 컴파일 오류가 발생할 수 있습니다.
도입된 버전
.NET 10
이전 동작
기존에 AsyncEnumerable커뮤니티 유지 관리 System.Linq.Async 패키지의 클래스가 LINQ 지원을 IAsyncEnumerable<T> 담당했습니다.
새 동작
.NET 10의 AsyncEnumerable 클래스와 System.Linq.AsyncEnumerable NuGet 패키지는 IAsyncEnumerable<T>에 대한 LINQ 지원을 제공합니다.
파괴적 변경 유형
이 변경 내용은 원본 호환성에 영향을 줄 수 있습니다.
변경 이유
IAsyncEnumerable<T> 는 일반적으로 사용되는 인터페이스이므로 플랫폼 자체는 형식에 대한 LINQ 지원을 제공해야 합니다. 유지보수자 System.Linq.Async 및 기타 커뮤니티 구성원은 플랫폼에 직접 포함될 것을 요청했습니다.
권장 작업
.NET 10으로 업그레이드하고 코드에 직접 패키지 참조가 포함된 경우 해당 패키지 참조를 System.Linq.Async제거하거나 버전 7.0.0으로 업그레이드합니다. .NET 10 및 이전 버전의 모두를 다중 대상으로 지정하려면 System.Linq.AsyncEnumerable에 패키지 참조를 추가하세요.
다른 패키지를 통해 간접적으로 소비되는 경우 System.Linq.Async에 대해 모호성 오류를 방지하기 위해 <ExcludeAssets> 메타데이터에 compile 또는 all 값을 추가하십시오.
System.Linq.Async의 전이적 사용을 허용하려면<ExcludeAssets>을(를)compile로 설정하세요.<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>compile</ExcludeAssets> </PackageReference>이 구성은 다른 패키지가 내부적으로 System.Linq.Async를 계속 사용할 수 있도록 하면서 코드에서 직접 사용을 방지합니다.
"완전히 제외하려면
<ExcludeAssets>을all로 설정합니다."<PackageReference Include="System.Linq.Async" Version="6.0.1"> <ExcludeAssets>all</ExcludeAssets> </PackageReference>런타임에 System.Linq.Async가 필요하지 않은 종속성이 확실한 경우에만 이 구성을 사용합니다.
대부분의 소비 코드는 변경 없이 호환되어야 하지만 일부 호출 사이트에서는 최신 이름과 서명을 참조하기 위한 업데이트가 필요할 수 있습니다. 예를 들어 같은 Select 호출은 e.Select(i => i * 2) 전후와 동일하게 작동합니다. 그러나 SelectAwait 대신 Select을 사용하도록 e.SelectAwait(async (int i, CancellationToken ct) => i * 2) 호출을 e.Select(async (int i, CancellationToken ct) => i * 2)에서 변경해야 합니다.
사용할 수 있는 IAsyncEnumerable<T>LINQ 확장 메서드의 전체 집합은 System.Linq.AsyncEnumerable API 설명서를 참조하세요.
영향을 받는 API
.NET