【问题标题】:Reference added but Namespace is not recognized添加了引用,但命名空间无法识别
【发布时间】:2011-10-06 15:13:49
【问题描述】:

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

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

【问题讨论】:

  • 您是否添加了对 DLL 的引用?

标签: c# namespaces


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    检查您的 DLL、s .NET 版本和宿主项目的 .网络版本。很可能存在不同,并且在您的特定情况下会以某种方式产生问题。

    问候。

    【讨论】:

      【解决方案3】:

      这通常取决于那个命名空间的in;例如,如果里面什么都没有,那么命名空间实际上并不存在

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

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

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

      【讨论】:

      • 就我而言,我的班级根本没有公共访问修饰符。
      【解决方案4】:

      您是否使用 客户资料 作为项目目标?考虑这种情况:

      项目 A -> 项目针对 .NET Framework 4.0

      项目 B -> 项目针对 .NET Framework 4.0 客户端配置文件

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

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

      简单的解决方案,将 Project B 更改为 .NET Framework 4.0(不是 Client Profile)。

      【讨论】:

      • 在这里遇到同样的问题...默认项目的目标是 .net 4 Client Profile...
      【解决方案5】:

      派对迟到了,但显然这是在最近的搜索中出现的,所以这是为了帮助登陆这里的新手。这里还有一件事要验证。

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

      Pack C# project to dll or another library

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

      【讨论】:

        【解决方案6】:

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

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

        将它们设置为公共访问级别解决了这个问题。希望它可以帮助某人! :)

        【讨论】:

          【解决方案7】:

          我遇到了同样的问题。我将控制台应用程序更改为项目属性中的类库。这样就解决了。

          【讨论】:

            【解决方案8】:

            我想为此添加一个原因,在 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 命名空间中声明 一些 Public Class(即使它是空的),然后在该 Public Module 中找到的所有方法都可用。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-01-21
              • 2019-12-19
              • 1970-01-01
              • 2014-08-31
              • 1970-01-01
              • 1970-01-01
              • 2012-05-07
              • 2018-03-21
              相关资源
              最近更新 更多