我有两个相同的项目,其中我在一个项目中的同一名称空间下有两个类。在第二个项目中,我添加了对该项目的引用,并在第二个项目中指定了using语句,以使用第一个项目的名称空间(下面的类)。
问题是它允许我使用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指令或程序集引用?)。
我在第一个项目中添加了对第二个项目的引用。
我在新解决方案中尝试了相同的机制,只需要使用那段代码就可以了。 (不幸的是,我无法通过整个项目移动,所以必须解决这个问题。)
请帮忙
非常感谢 提前
答案 0 :(得分:6)
不是我确定这是错误的原因,但我注意到的第一件事是你的test
构造函数要求参数:
public test(string code)
{
ErrorMessage = code;
}
但是你在这里调用默认(无参数)构造函数:
test tt = new test();
这不起作用,因为您创建了一个构造函数,因此默认构造函数不再可用。您需要传入一些字符串,以便调用声明的构造函数(test(string)
)。
答案 1 :(得分:2)
尝试单独构建每个程序集,有时会因构建顺序而在build all命令中显示构建错误。
您还应该设置构建顺序,以便始终在第二个项目之前构建第一个项目。
答案 2 :(得分:1)
你说:“我在第一个项目中添加了对第二个项目的引用。”但它应该是相反的方式。由于您正在使用第二个项目中第一个项目的类,因此需要在第二个项目中添加对第一个项目的引用。
答案 3 :(得分:1)
无法重现您遇到的编译器错误,但还有一些其他编译时问题:
为了得到这个错误,你得到了某种方式错误的引用。重新检查您的第二个组件是否具有对第一个组件的反射(反之亦然,如OP中所述)。
答案 4 :(得分:0)
除了RFIDHW()和参数之外,我没有看到使用此代码的任何问题。一旦你纠正了这个,你应该能够运行它。如果没有,请检查您的应用程序,如果您的命名空间是冲突的类型名称,或者您使用的任何库与您的班级有冲突。
答案 5 :(得分:0)
我遇到类VS72无法找到的类似的问题 (错误是参考或装配丢失), 它和其他类在同一名称空间中。
我认为,我的问题是因为我从GIT中取消了一些变化,因为我在两个不同的地方工作。 我已将“丢失的”File.cs移动到另一个文件夹并通过.gitignore VS17没有得到那些信息......改变。
(不太好)解决方案是使用命令 ctrl +。创建一个新类,然后VS17将找到你的两个类,然后删除不需要的类..
希望没有人会遇到这个问题...