【问题标题】:Namespace not found error when trying to compile尝试编译时找不到命名空间错误
【发布时间】:2019-08-29 19:44:43
【问题描述】:

编辑:更改类名或命名空间名称以使命名空间和类不具有相同名称并不能解决此问题。

我有这个超级简单的代码:

程序.cs:

using System;
using CodeCleaner;

class Program
{

    private static void Main(string[] args)
    {
        Console.WriteLine("DocTypeChecker instantiated");

        var codeCleaner = new CodeCleaner.CodeCleaner();
    }
}

CodeCleaner.cs:

using System;

namespace CodeCleaner
{
    public class CodeCleaner
    {

        public CodeCleaner()
        {
            Console.WriteLine("CodeCleaner instantiated");
        }

    }
}

当我在运行$ csc Program.cs 时尝试编译时会产生以下错误:

Program.cs(4,7):错误 CS0246:找不到类型或命名空间名称“CodeCleaner”(您是否缺少 using 指令或程序集引用?)。

我绝对不会错过 CodeCleaner 的 using 指令,但我不知道 assembly reference 的含义。在这种情况下,网络上的其他解决方案对我没有帮助。有人知道这里的问题吗?

【问题讨论】:

  • 我认为问题是命名空间和类名的名称相同。
  • 这不是问题。我尝试将命名空间名称更改为NCodeCleaner,但问题仍然存在(然后显示为namespace name 'NCodeCleaner' not found),所以同样的问题。
  • CodeCleaner 和 Program 在同一个程序集中吗?如果不是,则程序的程序集需要引用具有 CodeCleaner 的程序集。
  • 如果命名空间和类名相同可能会导致麻烦,但在这种情况下他不会完全使用命名空间和类名,例如:new CodeCleaner.CodeCleaner()
  • 只为您的 Program 类使用相同的命名空间

标签: c# .net mono


【解决方案1】:

运行 csc Program.cs 不会编译 CodeCleaner.cs,因此您的程序集将缺少 CodeCleaner 类和命名空间。使用 csc Program.cs CodeCleaner.cs 应该可以解决问题。

【讨论】:

  • 我会尝试并相应更新。但是假设我要添加超过 1 个文件,假设我有 10 个命名空间和类,我是否必须列出我正在使用的所有命名空间文件?
  • @erol_smsr 不,您可以使用csc *.cs 或csc -recurse:*.cs 以防您还需要编译子目录。
  • 谢谢!我刚刚在 .NET 文档中找到它,现在看到了您的评论。这解决了问题:)
猜你喜欢
  • 2013-07-07
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多