【问题标题】:Type or namespace cannot be found, when reference does exist当引用确实存在时,找不到类型或命名空间
【发布时间】:2011-07-08 16:58:50
【问题描述】:

我有一个 wpf 应用程序,我试图在其中引用我创建的类库。 我添加了对 .dll 的引用 我已经将 using 语句添加到我的文件中,智能感知实际上看到了新的命名空间。

然后在我的代码中,我可以在我添加的 .dll 中创建新的类对象。智能感知可以看到所有的方法等等。没问题,没有错误。

当我尝试构建我的 wpf 应用程序时,突然在我添加的 dll 上出现无法找到类型或命名空间的错误。

然后,每当我尝试从该 .dll 创建对象时都会出错。

我不明白发生了什么......为什么它在我构建之前工作,但是当我构建它时它决定它不知道我引用的那个 .dll 在哪里?

我还访问了我要添加的类库,并确保它的构建没有错误。

【问题讨论】:

  • 确保 dll 引用不是针对比您的项目更高级别的框架。即 3.5 项目引用 4.0 dll

标签: c# .net wpf


【解决方案1】:

最常见的原因是您的 .DLL 以完整的 .NET Framework 为目标,但 WPF 应用程序以客户端配置文件为目标。

例如,如果您的库面向 .NET 3.5,请确保您的 WPF 应用程序面向完整的 .NET 3.5 或 4.0 框架,而不是客户端配置文件。

【讨论】:

  • Microsoft 应该将此链接作为解决方案提示,而不是没有任何意义的通用错误消息。
  • 同样,我在从 .NET 4 项目中引用 .NET 4.5 项目时遇到此错误
【解决方案2】:

关于这个问题的一些想法,你可以试试:

  • 检查低版本未调用高版本程序集(例如 .NET 3.5 项目未调用 .NET 4.0 程序集)。

  • 清理 -> 构建(或重建)

  • 手动删除调用者和调用者项目的 bin/obj 文件夹。这迫使一切都被建造 - '硬'的方式。这听起来可能有些多余,但对我有用几次。

  • 重新启动 VS - 有时,只是没有解释。

  • 重新启动 - 当其他方法都不起作用时,请稍作休息,然后重试。

【讨论】:

  • 谢谢,但是这个问题已经有将近三年的历史了,因为我选择了一个正确的答案。
  • 我只是把它留在这里以防它对某人有帮助:)
  • @twaldron 此清单上的第 1 项为我解决了同样的问题。 =)
【解决方案3】:

您可以从其他项目复制任何 .dll 文件, 两个 .dll 文件。 例如:A.dll、A.pdb 并将这两个文件重命名为您的项目名称。

然后你就可以重建这个项目了。

【讨论】:

  • 他已经包含了 dll 文件,但是他的构建失败了。你的回答没有回答那个问题。
【解决方案4】:

如果您在没有 DLL 的情况下得到它 - 只需一个代码文件检查它是否已设置为编译。在 Visual Studio 2013 中,我不断添加代码文件,并将构建操作(在代码文件属性的高级部分下找到)设置为“内容”而不是“编译”。更改它。

【讨论】:

    【解决方案5】:

    有时需要明确命名包含命名空间的程序集。

    xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssembly"
    

    我不知道为什么有时需要它。

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2017-06-04
      • 1970-01-01
      • 2017-07-12
      • 2011-05-13
      相关资源
      最近更新 更多