Skip to content

Unresolvable(?) breaking change with System.Linq.Async in net10.0 #119718

Description

@Tragetaschen

Description

I've been trying to apply the suggestions for the expected breaking changes regarding the System.Linq.Async nuget. However, I'm not able to get to a working configuration. Between ToAsyncEnumerable being ambiguous and AnyAwaitAsync seemingly gone.

Reproduction Steps

In a class library referencing System.Linq.Async targeting net9.0 and net10.0, I have these reduced (and now nonsensical) extension methods.

public static class MyExtensions
{
    public static ValueTask<bool> AnyAwaitConcurrent<TSource>(
        this IAsyncEnumerable<TSource> items,
        Predicate<TSource> predicate,
        CancellationToken cancellationToken = default)
      => items.AnyAwaitAsync(x => ValueTask.FromResult(predicate(x)), cancellationToken);

    public static IAsyncEnumerable<T> MyToAsyncEnumerable<T>(this IEnumerable<T> source)
        => source.ToAsyncEnumerable();
}

This code compiles for net9.0

Expected behavior

There are clear migration steps and available APIs for this code to continue to work.

Actual behavior

For net10.0:
As given, it's reporting the documented ambiguous method since .NET 10 now comes with a base class library method, but the documented fixes also break the code.

Since it's a direct reference in a multi-target library, I'm supposed to reference System.Linq.AsyncEnumerable instead. This, however, breaks the call to AnyAwaitAsync since this extension method isn't available in that setup.

Regression?

It's a known breaking change, but the resolution steps are at least unclear. I'm inclined to say:

Yes.

Known Workarounds

There might be a way to call the correct extension methods using assembly aliases, but I have no clue how to declare those with framework assemblies.

Configuration

10.0.100-rc.1.25451.107

Other information

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-System.Linqneeds-further-triageIssue has been initially triaged, but needs deeper consideration or reconsiderationquestionAnswer questions and provide assistance, not an issue with source code or documentation.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions