引用已添加,但无法识别名称空间

我在我的项目中添加了一个DLL。 DLL包含名称空间test.security 。 现在,test.security无法识别。 为什么是这样?

我在其他项目中使用此DLL,我没有其他问题。

它通常取决于该命名空间中的内容; 例如,如果没有任何内容,那么命名空间实际上并不存在

您也可能缺少一些其他依赖项,这意味着编译器不能使用(直到添加引用)该命名空间中的任何类型(例如,如果该命名空间中的类型都依赖于某些类型来自Another.dll,你还没有引用Another.dll)。

您可能引用了错误的dll版本,并且您引用的版本没有该命名空间。

编译器可能已经告诉您有关引用问题的信息,这意味着它无法使用它 – 请查看错误/警告列表。 例如,它可能是物理上缺少的文件,或.NET版本不匹配,或强命名问题,这意味着它无法使用该引用。

您是否将Client Profile用作项目目标? 考虑这种情况:

项目A – >项目目标是.NET Framework 4.0

项目B – >项目目标.NET Framework 4.0客户端配置文件

项目A项目B引用。 项目A中的命名空间在项目B中无法识别。

如果场景匹配,这是由于目标不匹配。 Client Profile支持完整框架的BCL子集。 如果程序集依赖于使用完整框架(例如需要System.Web类型等),那么它将无法从仅支持Client Profile的组合中使用。

简单的解决方案,将项目B更改为.NET Framework 4.0(不是客户端配置文件)。

1.删​​除引用并再次添加2.关闭解决方案并重新打开它3.创建一个新解决方案并在其中添加所有旧解决方案

方式来晚了,但很明显这是在最近的一次搜索中出现的,所以这是为了帮助新手登陆这里。 还有一件事需要validation。

正如Dummy01对他对这个问题的回答的评论引用:

将C#项目打包到dll或其他库

“DLL位于项目的bin或release文件夹中。如果它看起来是空的,那是因为你的类被定义为私有或内部。你应该将你需要看到的名称更改为公开。”

检查您的DLL,.NET版本和主机项目。 NET版本。 最可能的是,它会有所不同,并且在某种程度上它会在您的具体案例中产生问题。

问候。

我也遇到过这个问题。 在我的情况下,我尝试删除引用,重建引用的项目,然后再次添加它,但问题仍然存在。

我的问题是目标项目命名空间中的类不公开。 这意味着该命名空间中没有任何内容可访问,因此它并不存在。

将它们设置为公共访问级别可以解决问题。 希望它可以帮到某人! 🙂

我有同样的问题。 我将控制台应用程序更改为项目属性中的类库。 修好了。

我想补充一个原因,在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中的任何Shared方法。 就像命名空间P2不存在一样,尽管引用就在那里。

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

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

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