2012-09-18 71 views
14

En la clase Employee Tengo algunos métodos que funcionan bien. Ahora quería añadir nuevo método, por ejemplo'Clase' no contiene una definición para 'Método'

public void ExampleMethod() 
{   
} 

Entonces lo llamo

Employee employee = new Employee(); 
employee.ExampleMethod(); 

ExampleMethod está presente en IntelliSense aparece después del punto, cuando golpeo F12 también me redirigir a ese método, pero Al iniciar el proyecto, aparece un error: 'Empleado' no contiene una definición para 'Método de ejemplo' y no se puede encontrar ningún método de extensión 'Método de ejemplo' que acepte un primer argumento de tipo 'Empleado' (¿falta una directiva de uso o una referencia de montaje?)

I don No sé por qué se produce este error, porque todos los demás métodos anteriores funcionan bien. ¿Cuál es el problema?

+0

es esta clase en algún otro ensamblaje? – Tigran

+2

¿Rebuild All Help? – devio

+2

¿Puedes publicar tu clase completa de empleado? Limpiar + reconstruir todo podría ayudar – KyorCode

Respuesta

19

hay tres posibilidades:

1) Si se refiere antigua DLL, entonces no puede ser utilizado. Por lo tanto, tiene que remitir una nueva DLL

2) Si la está usando en un espacio de nombres diferente e intenta usar la dll del otro espacio de nombres, entonces no referirá este método.

3) Es posible que tenga que reconstruir el proyecto

creo tercera opción podría ser la causa de usted. Por favor, publique más información para comprender su problema exacto.

+2

4) ¿El OP se ha confundido con algún tipo de ambigüedad de clase y hace referencia a una clase de empleado incorrecta de un proyecto/proyecto diferente? +1. –

+0

+1 -> No denomine las tablas de la base de datos de Entity Framework como las clases ... Doh. – teynon

+0

Solo tuve que limpiar y reconstruir – KthProg

5

Crear clase con el nombre de espacio de nombres podría resovle su problema

namespace.Employee employee = new namespace.Employee(); 
employee.ExampleMethod(); 
+0

Agregué manualmente el espacio de nombres antes de cada llamada de clase. Esto funcionó para mí. –

2

que tenía el mismo problema. Resulta que el proyecto al que hacía referencia no obtuvo compilación. Cuando fui al administrador de configuración de compilación en Visual Studio y habilité el proyecto de referencia, se resolvió el problema.

0

Tuve el mismo problema cuando trabajaba en una solución con varios proyectos que comparten código. Resultó que olvidé actualizar la DLL en la carpeta del segundo proyecto.

Mi sugerencia es tomar un buen me gusta en la columna 'proyecto' en la ventana de lista de errores y asegúrese de que el proyecto también utiliza la DLL correcta.

Saludos Dominic Rooijackers

+0

Gracias por la sugerencia sobre la columna del proyecto. En ASP.NET, Global.asax se considera en un proyecto diferente que el resto de su código, parece? Por lo tanto, no puede llamar a los métodos internos/de amistad de Global.asax. Muy molesto. – user169771

0

Yo tenía el mismo problema. Cambié la versión de ensamblado en AssemblyInfo.cs en la carpeta de propiedades. Pero, no tengo idea de por qué sucedió este problema. Tal vez el compilador no entienda que este dll es más nuevo, simplemente está cambiando la versión de Assembly.

0

Hoy me encontré con un problema con exactamente los mismos síntomas que usted describe. Cerré todos los archivos y reinicié VS solo para descubrir que algunos archivos desaparecieron del Explorador de soluciones.

Lo siguiente resolvió mi problema: al seleccionar el proyecto actual en el Explorador de soluciones, aparece un pequeño icono Show all files en la barra superior. Al hacer clic con el botón derecho en el archivo y seleccionar Include In Project, se soluciona.

Credit

1

Me acabo de encontrar con este problema; el problema parece diferente de las otras respuestas publicadas aquí, así que lo mencionaré en caso de que ayude a alguien.

En mi caso, tengo una clase base interna definida en un ensamblaje ("A"), una clase derivada interna definida en un segundo ensamblaje ("B") y un ensamblaje de prueba ("PRUEBA"). Expuse las partes internas definidas en el ensamblaje "B" a "PRUEBA" utilizando InternalsVisibleToAttribute, pero no lo hice para el ensamblaje "A". Esto produjo el error mencionado en la parte superior sin indicación adicional del problema; utilizando InternalsVisibleToAttribute para exponer el ensamblaje "A" a "PRUEBA" resolvió el problema.

0

Si está utilizando una clase de otro proyecto, el proyecto debe volver a compilarse y crear el nuevo dll. Asegúrese de que "Build" esté marcada para ese proyecto en Build -> Configuration Manager en Visual Studio. Entonces, el proyecto de referencia reconstruirá y actualizará el dll.

Cuestiones relacionadas