LayoutAwarePage在VS2012中的命名空间中不存在?

22

我正在尝试在我的Win 8应用程序上使用搜索合同,但是在将搜索合同添加到我的项目后,我遇到了以下名称空间错误:

LayoutAwarePage does not exist in namespace App1.Common.

我已经在XAML中正确声明了命名空间:

xmlns:common="using:App1.Common"

并且LayoutAwarePage位于正确的命名空间App1.Common中。

重新启动VS2012或删除并重建都无效。 要复制此问题,请尝试以下操作:

1)创建新的空白Metro应用程序

2)添加对Visual C ++运行时的引用

3)向项目添加搜索合同(单击“是”以自动添加其他内容,如LayoutAwarePage等)

4)重建并打开SearchResultsPage1.xaml

如果按照上述步骤操作,则应该会看到错误,并注意到SearchResultsPage1不会在设计器中显示。

只有在添加对Visual C++运行时的引用时才会出现此问题。没有这个引用,添加搜索合同就没问题!

有任何想法吗?我错过了什么?您能使用上述步骤复制问题吗?


这个 https://dev59.com/x2TWa4cB1Zd3GeqPHuXU 对你有帮助吗? - Alex
看起来这是同样的问题,但此时我正在努力理解我需要做什么来修复它 - 我的默认命名空间只是App1。我会再看一下那个答案... - Calanus
不好意思,我仍然在努力理解如何修复它。将winmd文件重命名为App1.winmd也没有起作用... - Calanus
1
我也遇到了同样的问题。当我将项目的目标CPU更改为x86时,它可以正常工作。但是使用x64或ARM时,我收到了相同的错误。 - Josh Rickard
你修复过这个问题吗?我也遇到了同样的问题。 - garfbradaz
@JoshRickard - 这也解决了我的问题,但我仍然不知道为什么。 - jbkkd
10个回答

27

我刚刚遇到了同样的问题。

关闭VS并删除相关的SUO文件(在解决方案文件夹中,可能会被隐藏)就像是魔法一样解决了问题。


一旦我删除了解决方案选项文件(我猜测上面提到的.SUO文件),我就不再收到错误信息并且项目构建成功。如上所述,该文件是隐藏的。 - webdad3
1
效果神奇。Google搜索只是连接到StackOverflow链接的管道。任何奇怪的错误都可以通过Google全文搜索解决! - Amogh Talpallikar

12

您必须添加对WinRTXamlToolkit的引用:

  1. 右键单击“参考”项;
  2. 选择“管理NuGet软件包…”;
  3. 在新窗口中左侧菜单中选择“在线”,然后选择“Windows和程序包”;
  4. 搜索名为“WinRTXamlToolkit”的库,选择它,然后单击“安装”按钮。

6
你能详细说明为什么这样做可以解决问题吗? - Josh Rickard
谢谢您的回答。虽然它没有完全解决我的问题,但我认为这个方法和删除另一个答案中提到的.suo文件解决了我的问题。 - webdad3
它包含Xaml的辅助类和其他必需的Helpers。 - Nikitesh

6
请关闭VS中的所有标签。
然后单击“生成”->“清理解决方案”。
接下来单击“生成”->“重新生成解决方案”。
现在打开XAML文件。
希望它能正常工作。

3

对我来说,这个让人恼火的错误通过简单地从调试任意CPU更改为x86就得到了解决,即使在设计器打开的情况下它也会复活。然后当你完成时,你可以关闭并改回任意CPU,并正常构建。


1
关闭所有XAML文件并重新构建项目。如果您在CS文件中有错误,请先修复它们。对我来说很容易,只需将public static MainPage Current;添加到主页面即可。

1

我刚刚在VS'2012中卸载了项目并重新加载它,然后它就开始工作了。不需要删除任何内容。


谢谢,这对我也起作用了。但这是 Visual Studio 的 bug 吗?因为我创建了一个新项目并添加了基本页面,它自动创建了所需的文件,但即使在重新构建后,这也无法解决问题。 - Hitesh

1

我删除了对Bing Maps SDK的引用,并将平台目标设置回任何CPU,这样问题就解决了。


问题在于我正在使用Bing Maps SDK(它依赖于Visual C++库)。 - Calanus

1
我遇到了一个问题,可能与使用 SQLite for Windows RT 插件(v3.7.15)有关,会出现随机的“x64 和 ARM 目标平台不可用”的错误提示。
无论如何,对于我来说,只要将 项目和解决方案的目标平台都更改为 x86,现在一切都正常工作,包括布局感知功能。
因此,在“解决方案资源管理器”中右键单击项目和解决方案,单击“属性”,选择 x86 架构即可。
不过,没有“任何 CPU”作为目标让我有点紧张。所以,如果有人知道如何在使用 SQLite 和布局感知页面时使其正常工作,请分享一下。

0

编译UWP应用程序时,我得到了一长串类似的错误。然而,在其中隐藏着几个真正的编译错误。当我修复了这些真正的错误后,缺失的引用也消失了。

因此,首先修复其他编译错误,看看这些“命名空间中缺少”的错误是否会消失。

编辑: 我的同事在VS 2017中也遇到了这个错误。 通过“生成”菜单清理解决方案并没有起作用。右键单击解决方案资源管理器中的项目,逐个清理,然后重新构建,可以解决问题。

编辑2: 我又遇到了这个问题。22个“命名空间中缺少”的错误。
我从ViewModel中删除了一个按钮处理程序,但忘记了从XAML代码中删除该按钮。当我修复了这个真正的错误后,22个“命名空间中缺少”的错误也消失了。


-1

我在使用Visual Studio 2012添加新的Xaml基本页面时也遇到了同样的问题。我只需要运行我的应用程序,错误就会自动消失。


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