El tipo o el nombre del espacio de nombres no existe [cerrado]


318

Tengo un proyecto de WCF Data Service creado con Visual Studio 2010, que funcionaba bien. De repente, ya no se compila. Me estaba dando mensajes como:

Error 7 El tipo o nombre de espacio de nombres 'Servicios' no existe en el espacio de nombres 'System.Data' (¿falta una referencia de ensamblado?) C: \ U ... s \ Visual Studio 2010 \ Projects ... \ DataService. cs ...

Error 8 El tipo o nombre de espacio de nombres 'Linq' no existe en el espacio de nombres 'Sistema' (¿falta una referencia de ensamblaje?) DependencyResolver.cs 3 14

Error 10 El tipo o nombre de espacio de nombres 'Web' no existe en el espacio de nombres 'System.ServiceModel' (¿falta una referencia de ensamblado?)

Error 12 No se pudo encontrar el tipo o nombre de espacio de nombres 'DataService' (¿falta una directiva de uso o una referencia de ensamblado?)

¿Cómo puedo arreglarlo?


44
incluso después de agregarlos, los mensajes de error aún permanecen
Attilah

18
Esto me fue útil. No sé por qué estaba cerrado.
usuario de gmail

2
Creo que es porque aunque las respuestas han sido útiles, la pregunta original es muy abierto y es improbable que se refieren a cualquier otra persona, a pesar de que las respuestas hacen
WongKongPhooey

48
¡Hey Mira! Una pregunta útil sobre SO. Oh, espera, está fuera de tema. Pero tiene una gran cantidad de votos a favor y una respuesta con aún más votos a favor. Algo ciertamente está "apagado" aquí, pero no es esta pregunta.
Jagd

3
¿Cómo los chicos que votaron para cerrar esto se perdieron el error muy específico en la pregunta ("El tipo o el nombre del espacio de nombres no existe en el espacio de nombres")? Tuve un problema similar y busqué en Google ese mensaje de error y esta pregunta fue el mejor resultado. Entonces la pregunta no es vaga en absoluto.
Simon Tewsi

Respuestas:


619

He tenido el mismo problema y tuve que establecer el "Marco de destino" de todos los proyectos para que sea el mismo. Entonces se construyó bien. En el menú Proyecto, haga clic en Propiedades de ProjectName. Haz clic en la pestaña de compilación. Haga clic en Opciones de compilación avanzadas. En el Marco de destino, elija el marco que desee.


13
Configuré el "Marco de destino" haciendo clic derecho en el proyecto en el explorador de soluciones y seleccionando propiedades. Target Framework debería estar visible en la pestaña de Aplicación predeterminada.
Cookie

44
@jaminator Esta es una solución en algunos casos. Al menos en el mío. Por alguna razón, mi proyecto se negó a aceptar que existiera un espacio de nombres de la misma solución. El problema era que la aplicación de consola apuntaba al perfil del cliente.
Amadiere

3
A mí también me funciona. Ocurrió cuando estaba agregando un proyecto WPF (.NET 4 Client Profile) y una referencia de proyecto de biblioteca de clases (.NET 4). Gracias un montón !!
Tamas Ionut

58
+1 a esto. Mensaje de error terriblemente engañoso. Probablemente me ahorró horas tratando de resolverlo. Hola, Microsoft, ¿qué tal "no se puede importar el espacio de nombres BLAH porque BLAH es una versión incompatible" pero supongo que le habría robado a Nathan 184 votos a favor?
Gerald Davis

3
¿Existe una solución para los casos en los que no podemos cambiar los marcos de destino de los proyectos?
Raj123

43

Tuve un problema con System.Linq no se reconoce. La usingdeclaración tenía un color rojo ondulado, etc. La forma en que lo resolví fue cambiar mi sitio web para apuntar a dotnet 3.5, luego volver al marco de destino original (4.0 en mi caso).


2
¡Trabajó para mí también! Pero tuve que hacerlo dos veces ... ¡imagínate!
nicholeous

Después de fusionar manualmente algunos archivos web.config de diferentes marcos de destino para la misma aplicación, web.config dejó de funcionar y obtuve un error interno del servidor 500. Después de restablecer como se describe, Visual Studio 2012 eliminó automáticamente algunas configuraciones antiguas de web.config, y luego la aplicación volvió a funcionar.
humbads

Tuve un problema similar, creo que ciertas versiones de framework simplemente no se reconocen System.Linqcomo una biblioteca válida
Callat

3
Gracias. Es ridículo que este tema se haya cerrado ya que esto también me ayudó después de perder una hora tratando de descubrir por qué mi función y mi referencia dejaron de funcionar de repente. La referencia que falló para mí fue system.management.automation.dll
Bbb

Eso fue realmente una magia. Al igual que mi nuevo Mobile Honor 8X, en el que a veces cambiar la configuración no tiene efecto de inmediato. Para que funcione correctamente, tengo que cambiar varias veces.
Harish NInge Gowda

28

Descubrí que esto es causado por tener el mismo nombre de espacio de nombres que el nombre de la clase ( MyWorld.MyWorld = Namespace.ClassName).

Cambie su espacio de nombre a un nombre que no sea el mismo nombre que su clase y esto se compilará.

Fuente


66
Para resolverlo, solo Windows.Whateverglobal::
prefije

20

Enfrenté el mismo problema con un sitio ASP.NET MVC cuando intenté usar LINQ to SQL . Arregle el problema por:

Explorador de soluciones -> Referencias -> Haga clic derecho en System.Data.Linq -> Copiar local (verdadero)


17

Verifique que su marco de destino tenga las mismas versiones de .NET. Tuve el mismo problema y mi clase .NET era 3.5 y la solución web tenía 4.5. Los sincronicé, y luego funcionó :)


16
esto simplemente repite el punto hecho y explicado en la respuesta anterior que fue publicada varios meses antes de este
mosquito el

12

Tuve el mismo problema e intenté todo lo anterior sin ningún éxito, luego descubrí lo que era:

Creé una carpeta llamada "Sistema" en uno de mis proyectos y luego creé una clase en ella. El problema parece provenir de tener un espacio de nombres llamado "Sistema" cuando se crea el archivo .cs, incluso si está en un espacio de nombres de "MyProject.System".

Mirando hacia atrás, puedo entender por qué esto causaría problemas. Realmente me sorprendió al principio ya que los mensajes de error inicialmente no parecen estar relacionados con el problema.


1
También tuve este problema, como referencia. Sería bueno si hubiera un mensaje de error más explicativo en la herramienta, pero bueno.
Nick

3
Publiqué algo en MSDN, pero MS dijo que no era un error. No discutiré con eso, pero hubiera esperado que hubieran entendido cómo podría causar problemas.
GrandMasterFlush

1
Eso es engaño ...
Jitka Darbie Hübnerová

12

He experimentado el mismo problema con System.Data.SQLite. La fuente del problema es que el dll que ha utilizado debe tener la misma versión .NET con su proyecto.

Por ejemplo, si ha utilizado (en mi caso) SQLite para .NET 4.5, el objetivo de su plataforma también debería ser .NET 4.5.

Puede encontrar el objetivo de la plataforma por: Proyecto> (nombre del proyecto) Propiedades> Compilar.


1
Esto resolvió un problema que acabo de tener. El mensaje de error no es muy útil más allá de decirte qué DLL es el problema.
PointlessSpike

7

En mi caso, el problema estaba sucediendo porque la clase que creé tenía un espacio de nombres que interfería con las clases existentes. La nueva clase A tenía un espacio de nombres zz.yy.xx (por error). Las referencias a objetos en otro espacio de nombres yy.xx no se estaban compilando en la clase A u otras clases cuyo espacio de nombres era zz.

Cambié el espacio de nombres de la clase A a yy.xx, que debería haber sido, y comenzó a funcionar.


5

PARA CUALQUIERA CON ARCHIVOS VINCULADOS: tuve este problema y estaba usando Silverlight y el archivo ofensivo que arrojaba este error era un archivo vinculado.

El error del compilador me dijo que el error estaba ocurriendo en el proyecto en el que vivía el archivo. Terminó que el error NO estaba en ese proyecto, estaba ocurriendo en el proyecto que contenía el archivo vinculado. A ese proyecto le faltaba una referencia.


Tuve este problema con el proyecto .NET 4 usando System.Management.Automation al probar el proyecto con Visual Studio 2013 en Windows 10. La actualización del proyecto a .NET 4.5.1 solucionó el problema.
Malcolm McCaffery

2

Encontré este problema al usar Git de Visual Studio integración para administrar el proyecto. Por alguna razón, el proyecto de Windows Phone 8 se compilaría bien al apuntar a x86, pero cuando lo configuré para apuntar a ARM, no se pudo compilar con un error que indica que "Publicidad" no existía en el espacio de nombres de Microsoft.

Terminé resolviendo el problema eliminando la referencia Microsoft.Advertising. *. Dll y agregándola nuevamente.


1

En mi caso no hubo cambios en los proyectos, simplemente se detuvo para compilar y con "el tipo o el nombre del espacio de nombres XXX no existe" y en la clase quejosa intellisense para ese espacio de nombres / clase XXX funciona bien. El problema estaba en las referencias de hecho!

Pasos para reproducir:

  1. La solución tiene ProjectA, ProjectB. ProjectA hace referencia a log4net de terceros y está marcado Copy local: true. ProjectB hace referencia a ProjectA y no tiene referencia a log4net. La solución se compila bien.

  2. Cambio en ProjectA: propiedad de referencia para log4net Copy local: false.

  3. Limpie las carpetas bin y obj.
  4. Cuando compila, ProjectA compila pero ProjectB se queja de no encontrar el espacio de nombres de ProjectA.

This is because ProjectB falta la carpeta bin biblioteca de terceros (log4net in my case)!

En este caso la solución sería:

  1. asegurarse de que las bibliotecas de terceros referencias se establecen en Copy local: true o
  2. agregue la ruta a dichas bibliotecas en las propiedades del proyecto en la ruta de referencia.

1

Estoy haciendo referencia a Microsoft.CommerceServer.Runtime.Orders y experimenté este error. Este proyecto es antiguo y tiene Target framework .NET 2.0. En la salida tuve este error:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

Simplemente cambié el framework de destino a .NET 4 y ahora se construye.


1

Y si todo lo demás falla, como asegurarse de que los marcos de destino son los mismos, y si se trata de una biblioteca de clase WPF en VS2010, simplemente reinicie Visual Studio. Eso lo hizo por mí.


en mi caso vs2010, una referencia de dll tiene un error, leí la referencia de dll y parece genial, pero después de compilar type namespace errorocurre. Y reinicio Visual Studio, después de reiniciar, el error dll original se muestra nuevamente, y lo volví a leer, y volví a construir, éxito.
yu yang Jian

0

Experimenté los mismos errores. Después de descubrir que mi proyecto tenía un nombre de ensamblado incorrecto (copié archivos de un proyecto diferente y los espacios de nombres se confundieron un poco), y lo cambié de nuevo, el proyecto se compiló muy bien.


Aunque voté abajo, ¡este era mi problema! Gracias.
SteveCav

0

Recibí un mensaje de error muy similar que fue causado por haber hecho inadvertidamente un duplicado de una clase en otro proyecto de mi solución. Eliminar el duplicado solucionó el problema


0

Recientemente necesité hacer una Restauración del sistema y causó que varios de mis archivos cambiaran / desaparecieran en los que había estado trabajando desde la restauración. Algunos de esos eran archivos DLL. Utilicé Source Control para recuperar todo el proyecto, pero aún tenía un problema similar al anterior. Encontré esta respuesta que describe que es posible que deba eliminar una DLL y la leí para corregir sus errores. Este fue el caso en mi escenario.

Eliminarlo WebMatrix.WebDatay leerlo, así como agregarlo, WebMatrix.Datacorrigió mi error de The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....


-3

Elimine el archivo .refresh.dll si está bajo control de origen. Luego reconstruir. Deberia de funcionar. Esto funciono para mi

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.