visual statement net how c# visual-studio-2010 reference using-statement using-directives

statement - using static class c#



No se pudo encontrar el tipo o el nombre del espacio de nombres (16)

PrjForm se configuró en ".Net Framework 4 Client Profile" Lo cambié a ".Net Framework 4", y ahora tengo una compilación exitosa.

Esto funcionó para mí también. Muchas gracias. Estaba probando un ejemplo RDF para dotNet donde descargué el kit de dotnetrdf.

Perfil de cliente de NET4: siempre seleccione el perfil de cliente de NET4 para todas las aplicaciones de escritorio de su cliente (incluidas las aplicaciones de Windows Forms y WPF).

NET4 Full framework: Target NET4 Full solo si las características o ensamblajes que necesita su aplicación no están incluidos en el perfil del cliente. Esto incluye: Si está creando aplicaciones de servidor, tales como:

  • Aplicaciones ASP.Net
  • Servicios web basados ​​en ASMX del lado del servidor

Si usa escenarios de clientes heredados, tales como: o Use System.Data.OracleClient.dll que está en desuso en NET4 y no está incluido en el perfil del cliente.

  • Utilice Windows Workflow Foundation 3.0 o 3.5 heredado (WF3.0, WF3.5)

Si apunta a escenarios de desarrollador y necesita una herramienta como MSBuild o necesita acceso para diseñar ensamblajes como System.Design.dll

Tengo una solución C# con varios proyectos en Visual Studio 2010 . Uno es un proyecto de prueba (lo llamaré " PrjTest "), el otro es un proyecto de Windows Forms Application (lo llamaré " PrjForm "). También hay un tercer proyecto referenciado por PrjForm, al que puede hacer referencia y usar con éxito.

PrjForm hace referencia a PrjTest , y PrjForm tiene una clase con una instrucción using :

using PrjTest;

  1. La referencia se ha añadido correctamente.
  2. using declaración está correctamente en su lugar
  3. La ortografía es correcta
  4. PrjTest construye con éxito
  5. PrjForm casi se construye, pero interrumpe el using PrjTest; línea con el error:

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

He intentado lo siguiente para resolver esto:

  1. Se eliminó a Resharper (ya que Resharper no tuvo problemas para reconocer el proyecto de referencia, pensé que valdría la pena intentarlo)
  2. Se eliminó y se volvió a agregar la referencia y utilizando la declaración.
  3. PrjForm recreado desde cero
  4. PrjForm actualmente reside dentro de la carpeta PrjTest, intenté moverlo a una carpeta externa
  5. Cargó la solución en una computadora diferente con una copia nueva de VS 2010

He hecho mi tarea y he pasado demasiado tiempo buscando una respuesta en línea, ninguna de las soluciones me ha ayudado aún.

¿Qué más podría intentar?


Cambiando el marco para

.NET Framework 4 Client Profile

hizo el trabajo por mi


El dll compilado debe tener clase pública.


En mi caso tuve:

DLL referenciada: .NET 4.5

Proyecto: .NET 4.0

Debido a la falta de coincidencia anterior, el proyecto 4.0 no pudo ver dentro del espacio de nombres de 4.5 .DLL. Recopilé el .DLL para apuntar a .NET 4.0 y estaba bien.


La declaración de uso se refiere a un espacio de nombres , no a un proyecto .

Asegúrese de tener el espacio de nombres con el nombre apropiado en su proyecto de referencia:

namespace PrjTest { public class Foo { // etc... } }

Lea más sobre los espacios de nombres en MSDN:


Me encontré con este problema que resultó ser.

El proyecto B hace referencia al proyecto A.

Proyecto A compilado como A.dll (nombre del ensamblado = A).

Proyecto B compilado como A.dll (nombre de ensamblaje A).

Visual Studio 2010 no estaba captando esto. Resharper estaba bien, pero no compilaría. El diseñador de WinForms dio un mensaje de error engañoso que dice que es probable que resulte de objetivos de plataforma incompatibles.

La solución, después de un día doloroso, fue asegurarse de que los ensamblajes no tuvieran el mismo nombre.


Otra cosa que puede causar este error es tener paquetes NuGet que se han construido con una versión más reciente de .NET.

El error original:

frmTestPlanSelector.cs(11,7): error CS0246: The type or namespace name ''DatabaseManager'' could not be found (are you missing a using directive or an assembly reference?)

Más arriba en el registro encontré esto:

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Microsoft.Common.targets(1605,5): warning MSB3275: The primary reference "[redacted]/DatabaseManager/bin/Release/DatabaseManager.dll" could not be resolved because it has an indirect dependency on the assembly "System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".

La solución fue volver a instalar los paquetes de NuGet:

http://docs.nuget.org/docs/workflows/reinstalling-packages


Otro problema que podría estar causando tal comportamiento son las configuraciones de compilación.

Tenía dos proyectos con configuraciones configuradas para construirse en carpetas específicas. Como Debug y Any CPU y en segundo lugar fue Debug y x86 .

Lo que hice fue a Solution->Context menu->Properties->Configuration properties->Configuration y configuro todos mis proyectos para que utilicen las mismas configuraciones Debug y x86 y también verifiqué la marca de verificación Build .

Luego los proyectos comenzaron a construirse correctamente y pudieron ver espacios de nombres.


Para las referencias de COM / ActiveX, VS 2012 mostrará este error directamente en el uso de la declaración. Lo cual es bastante gracioso, ya que dice que puede faltar una declaración de uso.

Para resolver esto: registre la dll COM / ActiveX real incluso si está en el proyecto vecino y agregue una referencia a través del canal COM, no del canal del proyecto. Agregará Interop.ProjectName en lugar de ProjectName como referencia y esto solucionará este extraño error.


Resolví el mío porque el otro proyecto estaba codificado con .NET 4.5 y el otro 4.0.


Si su proyecto (PrjTest) no expone ningún tipo público dentro del espacio de nombres PrjTest , causará ese error.

¿El proyecto (PrjTest) incluye clases o tipos en el espacio de nombres "PrjTest" que son públicos?


También es posible que los proyectos de referencia apunten a .NET 4.0, mientras que el Proyecto de aplicación de la consola apunta a .NET 4.0 Client Library.

Si bien podría no estar relacionado con este caso en particular, creo que alguien más puede encontrar útil esta información.


Tuve el mismo problema. Los marcos de destino estaban bien para mí. Todavía no funcionaba. Instalé VS2010 sp1 e hice una "Reconstrucción" en el PrjTest. Entonces empezó a trabajar para mí.


Vea esta pregunta .

Resulta que esto era un problema de perfil del cliente.

PrjForm se configuró en ".Net Framework 4 Client Profile" Lo cambié a ".Net Framework 4", y ahora tengo una compilación exitosa.

¡Gracias a todos! Creo que después de todo ese tiempo dedicado a buscar en línea, encuentro la solución minutos después de la publicación, creo que el truco es saber la pregunta correcta.


acaba de cambiar el marco de destino de la aplicación a ".Net Framework 4".

Y el error desapareció.

buena suerte; :RE


verifique las propiedades de su proyecto, sus rutas de referencia deben estar vacías como esta:

Saludos