命名空间中不存在名称"X" x64 "clr-namespace:Y"



在我们的WPF应用程序中,几周前编写的代码,并未显示错误现在显示Intellisense错误:

名称" foo"在名称空间中不存在Clr-namespace:bar"

其中" foo"是默认项目名称空间中定义的任何对象。该项目构建和运行无问题,但是Intellisense坚持存在错误,因此没有视觉工具可以使用(设计师显示"构建了更新设计视图的项目",在XAML代码中选择的元素没有显示属性。

主要应用程序是WPF/C#项目,但是我们通过托管的C 包装器与未托管的C 代码(使用OpenCV 64位的图像处理(链接。

Visual Studio 2017和2015都展示了这个问题(没有尝试任何较旧的东西(。

关于此错误有许多类似的问题,甚至还有一些答案即将结束,但是我无法用我之前找到的任何答案来解决问题。

我尝试过的一些事情:

  • 重建解决方案(都使用"重建"以及"清洁"one_answers"构建"(
  • 重新启动Visual Studio
  • 评论有问题的代码,重建,不满意和重建
  • 重建解决方案和项目(通过将现有项目和复制/粘贴代码添加到新文件中(
  • 删除.suo文件
  • 更改平台类型和重建*

*:当我发布此信息以拯救其他人免于浪费3天的生产力时,我可以说解决方案与平台类型有关。由于我们链接到64位库,因此C#项目的平台类型设置为X64。几个答案(在此处,此处(建议切换到X86,重建,然后返回X64, DID 工作,,但仅直到解决方案已关闭。重新打开解决方案或重新启动VS后,问题返回。

解决方案是:

  • 将平台目标设置为"任何CPU"

和至关重要的

  • 取消选中'优先32位'

在C#项目属性的构建部分,然后重建。

设置为x86导致与64位库链接时导致运行时错误,默认情况下,"任何CPU"的"均为32位",这会导致相同的行为。

希望这能节省别人的浪费,就像我一样!

更新:不幸的是,即使在警告中,也似乎选择"任何CPU",即使"偏爱32位"未检查的结果:

警告MSB3270:正在构建的" MSIL"项目的处理器体系结构与参考" X.dll"," AMD64"的处理器体系结构之间存在不匹配。此不匹配可能会导致运行时失败。

因此,唯一的解决方案是切换到"任何CPU",重建以使Intellisense错误消失,然后切换回X64,以便代码实际运行。每次打开解决方案时,都需要完成此操作。

最新更新