2008-10-10 11 views
25

En mi proyecto tengo una clase heredada por muchas otras clases. Lo llamaremos ClassBase.Cómo resolver la "referencia ambigua" incorrecta de ReSharper en la herencia de clase?

public class ClassInheritFromBase : ClassBase 

Cuando ClassBase se hereda, ReSharper se emite una advertencia de "referencia ambigua" en la ClassBase, y cualquier cosa dentro de la nueva clase que hereda de ClassBase no tiene IntelliSense y obtiene las advertencias de que no lo encuentra.

El proyecto compila y funciona correctamente.

Si cambio el espacio de nombres en el que se encuentra ClassBase y luego cambio las clases heredadas, les parece correcto y ReSharper no tiene ningún problema, IntelliSense funciona ... hasta que se compila. Después de la compilación, vuelve a tener las advertencias de referencia ambiguas y todo lo demás.

¿Esto se ha visto antes y cómo se puede arreglar? Vi una entrada en el seguimiento de errores de JetBrains para un problema como este, pero lo cerraron porque no se podían reproducir.

+0

¿Se puede crear una solución de muestra que muestre el comportamiento que describe? –

Respuesta

2

Este es un error en ReSharper 4.1 y se soluciona en una de las compilaciones nocturnas posteriores.

Descargue la última compilación nocturna en http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+Nightly+Builds.

+9

Todavía ocurre en ReSharper 8.2, por lo que probablemente tiene más que ver con las otras explicaciones sugeridas ... –

+3

En ReSharper 8.2, establezca Copiar local en False, luego en Verdadero para la referencia ofensiva. En mi caso fue System.Web.Http. –

+0

Todavía está ocurriendo ... –

3

He visto este error en ReSharper 4.1. Sucede cuando la clase base está en el directorio App_Code. No sé cómo arreglarlo; es muy molesto, pero el código todavía compila.

0

Tuve el mismo problema. El problema que tuve fue causado por un proveedor de compilación personalizado (de una biblioteca de código abierto que estoy utilizando llamada PageMethods) y por el hecho de que todas mis páginas .aspx heredan de una clase BasePage que vive en la carpeta App_Code.

No pude obtener ninguna compilación de ReSharper para trabajar con mi proyecto (4.1.933, 4.1.943 (último) o 4.5). La solución en la última versión de ReSharper corrige el problema de "Referencia ambigua", pero rompe el proveedor de compilación personalizada.

La única forma en que pude obtener tanto el proveedor de compilación como las clases base para trabajar con ReSharper fue poner las clases base en una biblioteca de clases separada.

Los siguientes son los errores de Jira registrados que parecen relacionarse con este tema:

0

que estaba experimentando el mismo problema con referencias a clases de C# en el AppCode carpeta.

Lo resolví actualizando mi ReSharper a la versión 4.5 (desde la versión 4.1).

Era una actualización muy simple, solo tenía que obtener la última versión del sitio web de JetBrains (http://www.jetbrains.com/resharper/download/) y ejecutarla.

No tuve que desinstalar la versión anterior (v4.1). No tuve que volver a ingresar mi clave de licencia existente.

Todas las referencias ahora se reconocen correctamente y puedo realizar las clases como se esperaba.

1

ReSharper -> Opciones -> General: Haga clic en el botón # Borrar cachés #.

+1

Parece que la eliminación de la caché vale la pena hacerlo de vez en cuando, pero no ayuda en este caso. –

14

Para aquellos que todavía tienen un problema con esto, (todavía lo obtengo de vez en cuando) estos son los pasos que hice para deshacerse de la advertencia de referencia ambigua en ReSharper.

  1. Primero fui a todos mis bibliotecas de clases y se aseguró de que todas las referencias a mis otras bibliotecas de clases tuvieron la copia local propiedad establecida en falso.
  2. En el proyecto en el que recibí la advertencia de referencia ambigua, fui a mi catálogo bin y eliminé todos los archivos .dll y .pdb para todas las bibliotecas que tenían su propio proyecto.
  3. Después de una nueva compilación, o en mi caso "actualización de referencia" en los archivos .dll en VS, los errores de Resharper desaparecieron.

estoy usando ReSharper 5.1 en Visual Studio 2008 con sólo una referencia a los archivos DLL que estoy usando es por eso que tuvo que "referencia actualización"

+3

Es 2013 y todavía encuentro ocasionalmente este problema. Sin embargo, los pasos anteriores funcionan para resolverlo. –

+0

2013 Resharper 6 y el problema continúa, pero puedo resolverlo en el panel Errores en la solución y hacer clic en cualquier error en la página .aspx. De alguna manera, mágicamente, al hacer clic en él, Resharper se da cuenta de que este es un problema imaginario y los "errores" desaparecen. – kevinsky

+8

Mentí. El problema vuelve con una venganza ... 4009 errores en 229 archivos. ¡Esto es ridículo! VS2013, Resharper 8.0.2. –

1

Para mí fue una cuestión de mi parte no usando la carpeta de solución para cachés. Cambiarlo de la ubicación TEMP a en la solución resolvió mi problema.

0

que tenía el mismo problema con ReSharper 5.1 y lo resolvió mediante el reinicio de Visual Studio 2010.

1

He eliminado la carpeta _ReSharper.SolutionName que se encuentra en la raíz de mi solución y se reinicia.

que estaba usando Visual Studio     2010 con ReSharper 5.1 ... Borrado de la memoria caché qué no ayuda (ReSharper -> menú Opciones ->general -> #clear caché #).

5

Estoy usando VS 2012 y ReSharper 7 y, a veces, encontré el mismo comportamiento. Estos son los pasos que han trabajado para mí:

  1. Limpiar solución
  2. Cierre Visual Studio
  3. Ir a la carpeta raíz de su solución y encontrar una carpeta llamada _ReSharper [Nombre de su solución] y eliminarlo. .
  4. Vuelva a Visual Studio, abra su solución, la carpeta se vuelve a crear y no más errores de "referencia ambigua" después de eso.
+0

Resharper 8.1 .. sigue teniendo ese problema, pero eso ayudó. – Vladimirs

+0

En mi caso, la memoria caché estaba en la carpeta de configuración del usuario (local, no itinerante en caso de dominio):% appdata% \ JetBrains \ ReSharper \ v7.1 \ SolutionCaches – ranieuwe

0

Utilizando VS 2013 Premium & Resharper 8.1, y estaba obteniendo este problema en un proyecto ASP.Net.

La solución que funcionó para mí:

  1. Hacer una solución limpia.
  2. Referencias abiertas para el proyecto ofensor
  3. En cada referencia que hace referencia a otro proyecto en la solución, establezca Copy Local = false.
  4. Intento de una solución de reconstrucción. Es probable que obtenga errores de referencia no resueltos, eso es normal.
  5. Ajuste cada referencia de nuevo a Copy Local = true (en su caso)
1

Usted realmente puede tener una referencia ambigua. En el proyecto donde se produce el error de referencia ambiguo, asegúrese de verificar las referencias de su proyecto. Es posible que tenga la misma referencia dos veces pero que se encuentre en diferentes espacios de nombres. En mi caso había dos, pero con diferentes caminos (ejemplo):

XXX.YYY.ZZZ.myassembly 
ZZZ.myassembly 

Asegúrese de que usted no tiene este tipo de cosas en sus referencias.

Cuestiones relacionadas