【问题标题】:namespace not found!未找到命名空间!
【发布时间】:2015-02-16 06:46:58
【问题描述】:

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

我从ConsoleApp中引用了Foo.Common并输入:

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

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

然后把它拿回来:

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

为什么我会得到这个?

发生了什么事?

【问题讨论】:

  • CommonClass 是否声明为public?如果没有,则不能在 Foo.Common 类库之外使用它。
  • 您在使用 Visual Studio 吗?如果是这样,对象浏览器(查看菜单)将向您显示加载的命名空间。
  • 它显示的是 Foo.Common。但是编译器正在寻找 Foo 命名空间。什么鬼?
  • 将 using 语句移出命名空间声明?
  • 如果你有一个using Foo.Bar.Baz; 指令并且编译器找不到Foo.Bar.Baz,它会寻找Foo.Bar。如果找不到,它会寻找Foo。如果它也找不到,它说找不到Foo,即使它最初正在寻找Foo.Bar.Baz

标签: c# .net reference using


【解决方案1】:

确保

  • ConsoleApp 项目引用了 Foo.Common 项目(不要浏览 Foo。 Common.dll),

  • 该文件包含一个 using 指令,用于声明 CommonClass 的命名空间,并且

  • CommonClass 被声明为public

所以你的文件应该是这样的:


Foo.Common 项目中的

CommonClass.cs

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

ConsoleApp 项目中的

Program.cs

using Foo.Common;

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

【讨论】:

  • 就是这样。但是当我编译时,我得到了如上所述的编译错误。
  • 这正是我通过“项目”选项卡添加参考的方式。
  • 好的,错误是由于项目位于设置中的 .net 4 客户端配置文件中。
  • @Foo Bar 你最后的评论必须是回答 :)))
  • @FooBar 请将您的评论作为答案:)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我没有 Foo 命名空间。我有 Foo.Common
    • 我添加了 Foo.Common 库作为参考。
    • 所以在其他解决方案中看起来像 namspace Foo.Common { public class CommonClass ... }?
    • 当您键入时,自动完成是否显示 Foo.Common?如果有什么尝试 Foo.Common.CommonClass = new Foo.Common.CommonClass()
    【解决方案4】:

    您是否添加了对该库的引用?在控制台项目的“参考”下查看。如果不存在,则需要添加它。

    【讨论】:

      【解决方案5】:

      我将此作为评论发布,但我想在这里扩展它。可能发生的情况是它看到 using 作为语句而不是关键字。您似乎有以下内容:

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

      试试

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

      相反。

      【讨论】:

      • 在命名空间声明中包含using 指令是完全有效的。 using 声明没有歧义。
      • 确实,不仅有效,而且有人强烈推荐,this question 有一些很好的信息。虽然,在命名空间内有一个 using 而在外面有一个肯定不是好风格!
      • 是的,我在发布后不久就意识到,它对命名空间别名非常有用。不过,我认为这可能是相关的,但猜测是 .net 4 客户端配置文件。
      【解决方案6】:

      Foo Bar 似乎收到此错误,因为他的项目的目标框架设置为客户端配置文件。

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

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

      【讨论】:

        猜你喜欢
        • 2019-11-20
        • 1970-01-01
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        • 2012-03-31
        相关资源
        最近更新 更多