添加了引用,但命名空间未被识别

本文关键字:识别 命名空间 引用 添加 | 更新日期: 2023-09-27 18:02:20

我在我的项目中添加了一个DLL。DLL包含命名空间test.security。现在,测试。安全不被认可。为什么会这样?

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

添加了引用,但命名空间未被识别

您是否使用Client Profile作为项目目标?考虑这个场景:

项目A ->项目目标。net Framework 4.0

项目B ->项目目标。net Framework 4.0客户端配置文件

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

如果此场景匹配,则是由于目标不匹配。客户端概要文件支持完整框架的BCL子集。如果一个程序集依赖于使用完整的框架(比如需要来自System.Web的类型等),那么它将无法用于只支持客户端配置文件的程序集。

简单的解决方案,将项目B更改为。net Framework 4.0(不是Client Profile)。

这通常取决于名称空间中的是什么;例如,如果里面什么都没有,那么命名空间就不存在

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

有可能你引用了错误的版本的dll ,而你引用的版本没有那个命名空间。

有可能编译器已经告诉你关于引用问题,这意味着它不能使用它-查看错误/警告列表。例如,它可能是物理上缺失的文件,或. net版本不匹配,或强命名问题,这意味着它不能使用引用。

1。删除引用并重新添加2.关闭溶液,然后重新打开3.创建一个新的解决方案,并添加所有旧的

来得太晚了,但显然这是在最近的搜索中出现的,所以这是为了帮助登陆这里的新手。还有一件事需要证实。

摘自Dummy01对这个问题的回答的评论:

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

"DLL在项目的bin或发布文件夹中。如果它看起来是空的,是因为你的类被定义为私有或内部的。您应该将需要在dll外部看到的名称更改为public。"

检查您的DLL,s . 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中的任何共享方法。这就好像命名空间P2不存在一样,尽管引用是存在的。

原因:P2从所有方法都包含在VB中的代码转换为单独的程序集。. NET公共模块。然而,"模块"并没有作为一个公共类被重新类型化。

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

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

我在我的项目中添加了一个控制台应用程序,但无法访问它。从csproject文件中删除了exe部分,现在正在工作