C# 已添加引用,但无法识别命名空间
我在我的项目中添加了一个DLL。DLL包含命名空间C# 已添加引用,但无法识别命名空间,c#,namespaces,C#,Namespaces,我在我的项目中添加了一个DLL。DLL包含命名空间test.security。现在,test.security未被识别。为什么会这样 我正在其他项目中使用此DLL,没有其他问题。1.删除引用并再次添加它 2.关闭解决方案并重新打开 3.创建一个新的解决方案并在其中添加所有旧的解决方案检查您的DLL、s.NET版本和宿主项目的。NET版本。最有可能的情况是不同的,在你的具体案例中,它以某种方式制造了问题 关于。它通常取决于名称空间中的内容;例如,如果其中没有任何内容,则名称空间实际上并不存在 您还
test.security
。现在,test.security未被识别。为什么会这样
我正在其他项目中使用此DLL,没有其他问题。1.删除引用并再次添加它 2.关闭解决方案并重新打开
3.创建一个新的解决方案并在其中添加所有旧的解决方案检查您的DLL、s.NET版本和宿主项目的。NET版本。最有可能的情况是不同的,在你的具体案例中,它以某种方式制造了问题
关于。它通常取决于名称空间中的内容;例如,如果其中没有任何内容,则名称空间实际上并不存在 您还可能缺少某些其他依赖项,这意味着编译器无法使用(在添加引用之前)该命名空间中的任何类型(例如,如果该命名空间中的类型都依赖于另一个.dll中的某个类型,而您没有引用另一个.dll) 您可能引用了错误版本的dll,并且您所引用的版本没有该命名空间
编译器可能已经告诉您一个引用问题,这意味着它无法使用它-查看错误/警告列表。例如,它可能是一个物理上丢失的文件,或者.NET版本不匹配,或者是一个强命名问题,这意味着它不能使用引用。您是否使用客户端配置文件作为项目目标?考虑这种情况: Project A->Project targets.NET Framework 4.0 Project B->Project targets.NET Framework 4.0客户端配置文件 项目A被项目B引用。项目B中无法识别项目A中的命名空间 如果场景匹配,这是由于目标不匹配造成的。客户机概要文件支持完整框架的BCL的一个子集。如果程序集依赖于使用完整的框架(如需要
System.Web
中的类型等),那么它将无法从仅支持客户端配置文件的assenbly中使用
简单的解决方案是,将Project B更改为.NET Framework 4.0(而不是客户端配置文件)。参加聚会的时间太晚了,但这显然是在最近的一次搜索中出现的,因此这是为了帮助在此登陆的新手。还有一件事要核实 正如Dummy01在回答这个问题时所说:
“DLL位于项目的bin或release文件夹中。如果它看起来是空的,那是因为您的类定义为private或internal。您应该将需要在DLL外部查看的名称更改为public。”我也遇到了这个问题。在我的例子中,我尝试删除引用,重建引用的项目,然后再次添加它,但问题仍然存在 在我的例子中,问题是目标项目命名空间中的类不是公共的。这意味着该名称空间中没有可访问的内容,因此它实际上并不存在
将它们设置为公共访问级别解决了问题。希望它能帮助别人!:) 我也有同样的问题。我在项目属性中将控制台应用程序更改为类库。这就解决了问题。我想添加一个原因,可以在VB.NET中找到(我的例子是Visual Studio 2010;您的可能会有所不同) 例如,我有两个项目:P1和P2 P1是一个应用程序,P2是一个类库 规定:
- P1到P2之间有一个参考
- P1和P2都以.NET 4.0为目标(完整,而不是客户端)
- P1和P2都以x86为目标(这并不重要)
- 有0个错误和0个警告
注意,实际上没有必要将原始模块转换为类。只需在P2命名空间中声明一些公共类(即使它是空的),然后在该公共模块中找到的所有方法都可用。是否添加了对DLL的引用?这里也有同样的问题。。。默认项目是以.NET4客户端配置文件为目标的…在我的例子中,我的类上根本没有公共访问修饰符。