C# 已添加引用,但无法识别命名空间

C# 已添加引用,但无法识别命名空间,c#,namespaces,C#,Namespaces,我在我的项目中添加了一个DLL。DLL包含命名空间test.security。现在,test.security未被识别。为什么会这样 我正在其他项目中使用此DLL,没有其他问题。1.删除引用并再次添加它 2.关闭解决方案并重新打开 3.创建一个新的解决方案并在其中添加所有旧的解决方案检查您的DLL、s.NET版本和宿主项目的。NET版本。最有可能的情况是不同的,在你的具体案例中,它以某种方式制造了问题 关于。它通常取决于名称空间中的内容;例如,如果其中没有任何内容,则名称空间实际上并不存在 您还

我在我的项目中添加了一个DLL。DLL包含命名空间
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个警告
但是,在P1中,无法声明“Imports P2…”表达式,也无法使用P2中找到的任何共享方法。就好像名称空间P2不存在一样,尽管引用在那里

原因:P2已从代码转换为单独的程序集,其中所有方法都包含在VB.NET公共模块中。但是,没有将“模块”重新类型化为公共类

没有任何错误,但P2命名空间在创建公共类之前对P1完全不可用


注意,实际上没有必要将原始模块转换为类。只需在P2命名空间中声明一些公共类(即使它是空的),然后在该公共模块中找到的所有方法都可用。

是否添加了对DLL的引用?这里也有同样的问题。。。默认项目是以.NET4客户端配置文件为目标的…在我的例子中,我的类上根本没有公共访问修饰符。