C#编译器:CS0121:以下方法或属性之间的调用不明确

g.p*_*dou 4 c#

这是我见过的最疯狂的事情,因为Fody插件通过发出无效代码来破坏我的程序集并且控制流在运行时随机变化......这次没有Fody.

事实:

  • 整个故事都在一个项目中.
  • GetMessage扩展方法已经存在几周了......
  • 问题从2个小时开始,我无法弄清楚它是什么.
  • 只有一个GetMessage扩展方法.
  • 错误消息(参见图片)列出了两个相同的方法规范

    Error CS0121 The call is ambiguous between the following methods or properties: 'ComiCalc.Data.ExceptionExtensions.GetMessage2(System.Exception)' and 'ComiCalc.Data.ExceptionExtensions.GetMessage2(System.Exception)' ComiCalc.Data D:\2014Develop\.vsonline\ComiCalc\src\ComiCalc.Data\Services\UserService.cs 61

  • 如果我同时将方法定义(在2个位置只编辑了2个)更改为GetMessage2,那么我只是引用了GetMessage2的完全相同的错误消息.

  • 使用VS 2015

有任何想法吗?

在此输入图像描述

这是单一的方法:

namespace ComiCalc.Data
{

    using System;
    using System.Data.Entity.Validation;
    using PluralTouch.DataAccess;
    // TODO: Move to PluralTouch
    public static class ExceptionExtensions
    {
        public static string GetMessage2(this Exception exception)
        {

            var message = exception.Message;
            if (exception is DbEntityValidationException)
            {
                message = ((DbEntityValidationException) exception).DbEntityValidationResultToString();
            }
            return message;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Jcl*_*Jcl 14

确保您没有在项目引用中引用输出二进制文件(即项目引用自身).在过去,Resharper(将输出二进制文件添加到项目引用)中发生了这种情况,因此扩展方法既可以在源代码中也可以在二进制引用中.


ser*_*dar 6

删除 bin 文件夹 > 打开项目 > 构建解决方案。