Esto es lo más loco que he visto desde que un complemento de Fody arruinó mi ensamblaje al emitir un código no válido y el flujo de control varió al azar en el tiempo de ejecución... No Fody esta vez.
Hechos:
El mensaje de error (ver la imagen) enumera dos especificaciones de método idénticas
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
Si cambio tanto la llamada como la definición del método (solo 2 ediciones en 2 lugares) a GetMessage2, entonces recibo exactamente el mismo mensaje de error que solo se refiere a GetMessage2.
¿Algunas ideas?
y aquí está el único método:
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; } } }Asegúrese de no hacer referencia al binario de salida en las referencias de su proyecto (es decir, el proyecto hace referencia a sí mismo). Esto me sucedió en el pasado con Resharper (la adición del binario de salida a las referencias del proyecto), por lo que el método de extensión está tanto en la fuente como en la referencia binaria.
Eliminar carpeta bin> abrir proyecto> construir solución.
Obtuve el mismo error porque mi proyecto hacía referencia a un dll y, al mismo tiempo, tenía una dependencia transitiva al mismo dll pero en una ruta de archivo diferente.
Lo detecté usando un registro adicional durante la compilación (Herramientas -> Opciones -> Compilación y ejecución -> verbosidad de salida a Detallado o Diagnóstico) al buscar el nombre de la dll de dependencia: en la Tarea "Csc" hubo dos apariciones de /reference con la dll
La solución fue señalar referencias a la misma ruta dll