compiler build error : The call is ambiguous between the following methods or properties

Viewed 7275

I am experiencing a strange compiler error with extension methods. I have an assembly which has an extension method like

public static class MyClass
{
    public static Bar GetBar(this Foo foo)
    {
        return new Bar();
    }
}

And elsewhere in the same assembly i do something like this

Foo foo = new Foo();
var bar = foo.GetBar();

When i clean and compile everything is OK. BUT once i make a small change (like an extra whitespace) in the assembly and build again I get an error like this:

Error 973 The call is ambiguous between the following methods or properties: 'MyNameSpace.MyClass.GetBar(Foo)' and 'MyNameSpace.MyClass.GetBar(Foo)'

Only after i clean the project I can build again. Is this a problem in the compiler using an old version of the assembly? Only work around I see now is to replace my extension methods with normal static methods.

4 Answers

I've had this behavior upon compiling with MSBuild v14:

  • building in VS 2015 worked just fine
  • building on the same machine by MSBuild worked also
  • building on a server machine with only MSBuild preinstalled failed

Installing the .NET Developer Pack (in my case Developer Pack for 4.5.2) solved the issue, even if the error message was misleading.

Related