C# 它说调用不明确,但只有一个名称空间

C# 它说调用不明确,但只有一个名称空间,c#,namespaces,extension-methods,C#,Namespaces,Extension Methods,我正在将一些代码移植到.NET Standard 2.1,现在我在这样做时遇到了一个错误: tmpQuote.SpecialCosts.RemoveAllcqMainCost=>dsSpecialCosts.Tables[0]。AsEnumerable.Anyrow=>cqMainCost.Name==row.FieldCostName 它在AsEnumerable上失败 以下方法或属性之间的调用不明确:“System.Data.DataTableExtensions.AsEnumerableS

我正在将一些代码移植到.NET Standard 2.1,现在我在这样做时遇到了一个错误:

tmpQuote.SpecialCosts.RemoveAllcqMainCost=>dsSpecialCosts.Tables[0]。AsEnumerable.Anyrow=>cqMainCost.Name==row.FieldCostName

它在AsEnumerable上失败

以下方法或属性之间的调用不明确:“System.Data.DataTableExtensions.AsEnumerableSystem.Data.DataTable”和“System.Data.DataTableExtensions.AsEnumerableSystem.Data.DataTable”

通常,同一方法名之间存在歧义,但在两个不同的名称空间中

在这里,相同名称空间中的相同方法名称之间存在歧义

项目正在引用nuget包:System.Data.DataSetExtensions 该项目还引用了其他项目,这些项目反过来又引用了相同的nuget包

但这是一件平常的事,从来没有给我造成过这个问题

更新:找到以下内容:

这让我更仔细地观察了其他被引用的项目,它们是2.0而不是2.1
将我的项目更改为2.0解决了这个问题。

问题在于它是一个net standard 2.1项目,引用了其他net standard 2.0项目。并且DataSetExtensions在2.0和2.1中不相同


将项目更改为2.0解决了问题

代码和使用条款是什么?如果引用两个定义相同扩展方法的DLL,则可能会发生这种情况。例如,虽然您可以同时引用Aspnet Appinsights和Worker Service app insights软件包,但当您尝试使用其中一种扩展方法时,会出现与上述类似的错误,但对于AI,当然,这是因为两个包在同一命名空间中都有一个名为XxxExtensions的类,该类具有相同的方法和签名。编译器无法消除歧义,因此无法解决问题。您需要VS不支持的程序集别名。您可能遇到了类似的问题。关键是,请直接和间接地查看您正在引用的包,并确保没有不必要的包。您编写的内容是有意义的。我希望有一个不那么暴力的方法,因为这个疯狂的类使用XYZ的代码不少于55行,它是18k行。如果我能看到发生冲突的两个源代码/DLL/引用,那就太好了