Skip to content

Theraot.Core conflicts with Microsoft.Bcl.AsyncInterfaces package #196

Description

@ig-sinicyn

If the project references both Theraot.Core and Microsoft.Bcl.AsyncInterfaces packages there's Error CS0433 The type 'IAsyncEnumerable<T>' exists in both assemblies error when using the IAsyncEnumerable<T> type

NB1: the reference may be transitive. As example, SomeProject -> System.Text.Json -> Microsoft.Bcl.AsyncInterfaces.

NB2: the issue may be workarounded with aliases for unneeded assembly,

	<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="7.0.0" >
		<Aliases>AsyncInterfaces</Aliases>
	</PackageReference>

But it may be a good idea to use the Microsoft.Bcl.AsyncInterfaces in Theraot.Core, as it is done with Microsoft.Bcl.HashCode package

UPD: I've just discovered the IAsyncEnumerable<T> is not available when targeting net48. I'm not sure if I should report it as a separate issue as it'll be fixed automatically after referencing the Microsoft.Bcl.AsyncInterfaces. Extracted to #197

Repro:
Program.cs:

internal class Program
{
	public static void Main(string[] args)
	{
		IAsyncEnumerable<int> a = null;
	}
}

ConsoleApp.csproj:

<Project Sdk="Microsoft.NET.Sdk">
	<PropertyGroup>
		<OutputType>Exe</OutputType>
		<TargetFramework>net461</TargetFramework>
		<ImplicitUsings>enable</ImplicitUsings>
	</PropertyGroup>
	<ItemGroup>
		<PackageReference Include="System.Text.Json" Version="7.0.3" />
		<PackageReference Include="Theraot.Core" Version="3.2.11" />
	</ItemGroup>
</Project>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions