2011-07-15 26 views
6

Creé una solución llamada Foo. Se agregó una biblioteca de clases llamada Foo.Common Se agregó una aplicación de consola para llamar al código de la biblioteca llamado ConsoleApp.namespace no encontrado!

que hace referencia el Foo.CommonConsoleApp de y proporcionado:

using Foo.Common; 
public class Program 
{ 
    CommonClass c = new CommonClass();    

    static void Main(string[] args) 
    { 
    } 
} 

y obtén esta vuelta:

Error 1 The type or namespace name '**Foo**' could not be found (are you missing a using directive or an assembly reference?) Z:\Foo\Solution1\ConsoleApplication1\Program.cs 3 11 ConsoleApplication1

¿Por qué recibo esto?

¿Qué está pasando?

+0

¿CommonClass se declara como 'public'? De lo contrario, no puede usarlo fuera de la biblioteca de clases Foo.Common. – dtb

+0

¿Estás usando Visual Studio? De ser así, el Examinador de objetos (menú Ver) le mostrará los espacios de nombres cargados. –

+0

sí público ..... –

Respuesta

6

Asegúrese de que

  • El proyecto ConsoleApp tiene una referencia al proyectoFoo.Common(ver no Navegar por Foo.Common.dll),

    Screenshot

  • el archivo contiene s directiva using para el espacio de nombres en el que se declara CommonClass y

  • CommonClass se declara como public.

para que sus archivos deben tener este aspecto:


CommonClass.cs en Foo.Common proyecto:

namespace Foo.Common 
{ 
    public class CommonClass 
    { 
     public CommonClass() 
     { 
     } 
    } 
} 

Program.cs en ConsoleApp proyecto:

using Foo.Common; 

namespace ConsoleApp 
{ 
    public class Program 
    { 
     public static void Main() 
     { 
      CommonClass x = new CommonClass(); 
     } 
    } 
} 
+0

es exactamente así. pero cuando compilé, recibí un error de compilación como el anterior. –

+0

Así es exactamente como agregué la referencia a través de la pestaña Proyectos. –

+7

Ok, el error se debió a que Project estaba en el perfil del cliente .net 4 en la configuración. –

0

haga clic derecho en la nueva consola de aplicación de solución/proyecto y agregar referencia y añadir el proyecto que contiene el espacio de nombres de Foo

+0

No tengo un espacio de nombres de Foo. Tengo Foo.Common –

+0

y agregué la biblioteca Foo.Common como referencia. –

+0

por lo que parece que namspace Foo.Common {public class CommonClass ...} en la otra solución? –

0

¿Ha agregado una referencia a la biblioteca? Busque en "Referencias" en el proyecto de la consola. Si no está allí, debes agregarlo.

+0

Ya lo agregué. –

0

Me ha publicado esto como un comentario, pero quiero ampliar aquí. Lo que probablemente está sucediendo es verlo usando como una declaración y no como una palabra clave.Parece que tienes algo como lo siguiente:

using System; 
namespace TestNamespace 
{ 
    using Foo.Common; 
    public Class { } 
} 

Trate

using System; 
using Foo.Common; 
namespace TestNamespace 
{ 
    public Class { } 
} 

lugar.

+0

Es perfectamente válido tener una directiva 'using' dentro de una declaración de espacio de nombres. No hay ambigüedad con una declaración 'using'. – dtb

+0

De hecho, no solo es válido, pero algunas personas lo recomiendan fuertemente, [esta pregunta] (http://stackoverflow.com/q/125319/180803) tiene buena información. Aunque, tener un 'using' dentro del namespace y otro afuera seguramente no es un buen estilo. – Carson63000

+0

Sí, me di cuenta de que poco después de publicar, es realmente útil para crear alias de espacio de nombres. Aún así, pensé que podría estar relacionado, supongo que fue el perfil del cliente .net 4. – mletterle

2

Asegúrese de que en la configuración de su proyecto, el marco de destino esté configurado como .NET Framework 4 y no como .NET Framework 4 Client Profile. Obtuve este mismo comportamiento cuando se configuró en Perfil del cliente y se corrigió tan pronto como lo configuré para el .NET Framework 4.

0

Parece que el Foo Bar obtuvo este error porque se definió el marco de destino de su proyecto al perfil del cliente.

Acabo de pensar que agregaría una 'solución' más - Creé una biblioteca que apuntaba al marco 4.5. Mi proyecto anterior fue tarting the 4 framework. Tengo este error

Cambiar el proyecto anterior a 4.5 lo hizo funcionar.