找到了引用但是无法找到类型或命名空间

25

我有一个WPF应用程序,想要引用我创建的类库。

我已经添加了对.dll文件的引用,并在我的文件中添加了using语句,智能感知也确实看到了新的命名空间。

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

但是,当我尝试构建我的WPF应用程序时,突然间就会出现“找不到类型或命名空间”的错误,针对我添加的.dll。

然后,每当我尝试创建那个.dll的对象时,我都会遇到错误。

我不明白发生了什么...为什么在构建之前它可以正常工作,但在构建后却找不到我正在引用的.dll?

此外,我已经去检查了我要添加的那个类库,并确保它没有任何错误。


3
请确保所引用的 DLL 不高于您的项目所使用的框架版本,例如一个使用 3.5 框架的项目引用了 4.0 版本的 DLL。 - Darren Kopp
5个回答

60

这种情况最常见的原因是,您的 .DLL 目标针对完整的 .NET Framework,但 WPF 应用程序的目标是客户端配置文件。

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


6
微软应该将此链接作为解决方案提示,而不是一条毫无意义的通用错误信息。 - Teoman shipahi
同样地,当我从一个.NET 4项目引用一个.NET 4.5项目时,我也遇到了这个错误。 - mao47

5
这个问题的几点建议:
  • 检查低版本是否调用了高版本程序集(例如,.NET 3.5项目是否调用了.NET 4.0程序集)。

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

  • 手动删除调用者和被调用者项目的bin / obj文件夹。这会强制构建所有内容-“硬”方式。这可能听起来有些冗余,但在某些情况下确实有效。

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

  • 重启电脑 - 当其他方法都无效时,休息一下,然后再试一次。


谢谢,但这个问题已经快三年了,并且已经解决,因为我选择了一个正确的答案来解决它。 - twaldron
1
我只是把这个留在这里,以防它能帮助到某个人 :) - Joel
1
@twaldron 这个清单上的第一项解决了我遇到的同样问题。 =) - Ken

0
有时需要显式命名包含命名空间的程序集。
xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssembly"

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


0
你可以从其他项目中复制任何 .dll 文件,两个 .dll 文件。 例如:A.dll、A.pdb 并将这两个文件重命名为你的项目名称。
然后你就可以重新构建这个项目了。

2
他已经包含了dll文件,但是他的构建失败了。你的回答并没有回答那个问题。 - pascalhein

0
如果您没有DLL文件,只有代码文件,请检查它是否设置为编译。在Visual Studio 2013中,我不断添加代码文件,它会将Build Action(在代码文件属性的高级部分下找到)设置为“Content”,而不是“Compile”。请更改此设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接