找不到相同名称空间的命名空间

时间:2011-01-14 06:05:11

标签: c# .net

我有两个相同的项目,其中我在一个项目中的同一名称空间下有两个类。在第二个项目中,我添加了对该项目的引用,并在第二个项目中指定了using语句,以使用第一个项目的名称空间(下面的类)。

问题是它允许我使用1个类,但不允许我使用第二个类。

···为什么????

以下是代码:

项目1

using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LibraryProject
{
    public class test
    {
        public static string ErrorMessage = "";


        public test(string code)
        {
           ErrorMessage = code;

        } 


    }

    public class FirstClass
    {
        public static string ErrorMessage = "";

        public RFIDHW(string code)
        {
            ErrorMessage = code;

        }

    }
}

第二个项目

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using LibraryProject;

namespace Engine
{
    /*
     * Connect engine logic with back end DB and other library
     */
    public class BackEnd
    {

        //Return tag list from the connected reader as List<Tag>
        public string GetMessage()
        {
            FirstClass fc = new FirstClass();  //OK no problem

            test tt = new test(); // Error message

        }//End of GatTagList method

    }//End of BackEnd class
}//End of namespace

我收到的错误消息是

找不到类型或命名空间名称“test”(您是否缺少using指令或程序集引用?)。

我在第一个项目中添加了对第二个项目的引用。

我在新解决方案中尝试了相同的机制,只需要使用那段代码就可以了。 (不幸的是,我无法通过整个项目移动,所以必须解决这个问题。)

请帮忙

非常感谢 提前

6 个答案:

答案 0 :(得分:6)

不是我确定这是错误的原因,但我注意到的第一件事是你的test构造函数要求参数:

    public test(string code)
    {
       ErrorMessage = code;

    } 

但是你在这里调用默认(无参数)构造函数:

test tt = new test();

这不起作用,因为您创建了一个构造函数,因此默认构造函数不再可用。您需要传入一些字符串,以便调用声明的构造函数(test(string))。

答案 1 :(得分:2)

尝试单独构建每个程序集,有时会因构建顺序而在build all命令中显示构建错误。

您还应该设置构建顺序,以便始终在第二个项目之前构建第一个项目。

答案 2 :(得分:1)

你说:“我在第一个项目中添加了对第二个项目的引用。”但它应该是相反的方式。由于您正在使用第二个项目中第一个项目的类,因此需要在第二个项目中添加对第一个项目的引用。

答案 3 :(得分:1)

无法重现您遇到的编译器错误,但还有一些其他编译时问题:

  1. class test没有无参数构造函数。
  2. 方法FirstClass中的RFIDHW没有指定返回类型。如果它应该是一个构造函数,那么你忘了重命名它。
  3. 为了得到这个错误,你得到了某种方式错误的引用。重新检查您的第二个组件是否具有对第一个组件的反射(反之亦然,如OP中所述)。

答案 4 :(得分:0)

除了RFIDHW()和参数之外,我没有看到使用此代码的任何问题。一旦你纠正了这个,你应该能够运行它。如果没有,请检查您的应用程序,如果您的命名空间是冲突的类型名称,或者您使用的任何库与您的班级有冲突。

答案 5 :(得分:0)

我遇到类VS72无法找到的类似的问题 (错误是参考或装配丢失), 它和其他类在同一名称空间中。

我认为,我的问题是因为我从GIT中取消了一些变化,因为我在两个不同的地方工作。 我已将“丢失的”File.cs移动到另一个文件夹并通过.gitignore VS17没有得到那些信息......改变。

(不太好)解决方案是使用命令 ctrl +。创建一个新类,然后VS17将找到你的两个类,然后删除不需要的类..

希望没有人会遇到这个问题...