C# 找不到命名空间!

C# 找不到命名空间!,c#,.net,reference,using,C#,.net,Reference,Using,我创建了一个名为Foo的解决方案。 添加了一个名为Foo.Common的类库 添加了一个控制台应用程序以从名为ConsoleApp的调用库代码 我引用了ConsoleApp中的Foo.Common并键入: using Foo.Common; public class Program { CommonClass c = new CommonClass(); static void Main(string[] args) { } } 把这个

我创建了一个名为Foo的解决方案。 添加了一个名为Foo.Common的类库 添加了一个控制台应用程序以从名为ConsoleApp的调用库代码

我引用了ConsoleApp中的Foo.Common并键入:

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

    static void Main(string[] args)
    {
    }
}
把这个拿回来:

错误1找不到类型或命名空间名称“**Foo**”,是否缺少using指令或程序集引用?Z:\Foo\Solution1\ConsoleApplication1\Program.cs 3 11 ConsoleApplication1

为什么我会得到这个


发生了什么?

右键单击新的控制台应用程序解决方案/项目,添加引用并添加包含Foo命名空间的项目

是否添加了对库的引用?在控制台项目中的“引用”下查找。如果它不在那里,您需要添加它。

确保

ConsoleApp项目引用了Foo.Common项目,请不要浏览Foo.Common.dll

该文件包含声明CommonClass的命名空间的using指令,以及

CommonClass被声明为public

因此,您的文件应如下所示:

Foo.Common项目中的CommonClass.cs:

ConsoleApp项目中的Program.cs:


我将此作为一条评论发布,但我想在这里对其进行扩展。可能发生的是,它看到的是用作语句而不是关键字。您似乎有以下类似的内容:

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


相反

确保在项目设置下,目标框架设置为.NET framework 4,而不是.NET framework 4客户端配置文件。当它被设置为客户端配置文件时,我得到了相同的行为,当我将它设置为常规的.NET Framework 4时,它就被修复了。

看起来Foo Bar出现了此错误,因为他的项目的目标框架被设置为客户端配置文件

我只是想再添加一个“解决方案”——我创建了一个针对4.5框架的库。我以前的项目是启动4框架。我犯了这个错误


将较旧的项目更改为4.5使其工作。

我没有Foo名称空间。我有Foo.Common,我添加了Foo.Common库作为参考。所以在另一个解决方案中它看起来像namspace Foo.Common{public class CommonClass…}?键入时,自动完成是否显示Foo.Common?如果有任何问题,请尝试Foo.Common.CommonClass=new Foo.Common.CommonClassIs CommonClass声明为public?如果不是,则不能在Foo.Common类库之外使用它。是否使用Visual Studio?如果是这样,对象浏览器视图菜单将显示加载的名称空间。它将显示Foo.Common。但是编译器正在寻找Foo名称空间。WTF?将using语句移出命名空间声明?如果您有using Foo.Bar.Baz;指令,编译器找不到Foo.Bar.Baz,它会查找Foo.Bar。如果它找不到,它就去找福。如果它也找不到,它会说找不到Foo,尽管它最初是在寻找Foo.Bar.Baz。它就是这样。但是当我编译的时候,我得到的编译错误如上所述。这正是我通过“项目”选项卡添加引用的方式。确定错误是由于项目位于设置中的.net 4客户端配置文件中。@Foo-Bar您的最后一条注释必须是answer:@FooBar请使您的注释成为答案:在命名空间声明中包含using指令是完全有效的。使用语句没有歧义。事实上,它不仅有效,而且一些人强烈推荐它,它有一些好的信息。尽管如此,在名称空间内使用一个名称空间,在名称空间外使用一个名称空间肯定不是一种好风格!是的,我在发布后不久就意识到,它对于名称空间别名非常有用。尽管如此,我认为这可能是相关的,但我猜这是.NET4客户端配置文件的问题。
using Foo.Common;

namespace ConsoleApp
{
    public class Program
    {
        public static void Main()
        {
            CommonClass x = new CommonClass();
        }
    }
}
using System;
namespace TestNamespace
{
  using Foo.Common;
  public Class { }
}
using System;
using Foo.Common;
namespace TestNamespace
{
  public Class { } 
}