当引用存在时,无法找到类型或命名空间

时间:2011-07-08 16:58:51

标签: c# .net wpf

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

然后在我的代码中,我能够在添加的.dll中创建新的类对象。 intellisense看到所有的方法都没有问题,没有错误。

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

然后,当我尝试从.dll创建对象时,我会收到错误。

我没有得到正在发生的事情..为什么它在我构建之前有效,但是当我构建它时决定它不知道我在哪里引用.dll

此外,我已经去了我想要添加的类库,并确保它构建没有错误。

5 个答案:

答案 0 :(得分:61)

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

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

答案 1 :(得分:5)

您可以尝试一些关于此事的想法:

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

  • 清洁 - >建立(或重建)

  • 手动删除调用者和调用项目的bin / obj文件夹。这迫使一切都要建立 - “艰难”的方式。这可能听起来多余,但对我有用了几次。

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

  • 重新启动 - 当没有其他工作时,请休息一下,然后重试。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

有时需要显式命名包含命名空间的程序集。

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

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