Xamarin.forms 名称为;AppClass“;命名空间中不存在“…”&引用;从另一个基于应用程序的类继承UWP应用程序类时

Xamarin.forms 名称为;AppClass“;命名空间中不存在“…”&引用;从另一个基于应用程序的类继承UWP应用程序类时,xamarin.forms,uwp,mvvmcross,Xamarin.forms,Uwp,Mvvmcross,我想要实现的只是继承UWP应用程序类,而不是从Windows.UI.Xaml.Application类继承,而是从一些基类继承,从“标准”类继承 但是,当我这样做时: namespace MyNamespace { sealed partial class App : MyUwpBaseApplication { public App() { this.InitializeComponent(); }

我想要实现的只是继承UWP应用程序类,而不是从Windows.UI.Xaml.Application类继承,而是从一些基类继承,从“标准”类继承

但是,当我这样做时:

namespace MyNamespace
{
    sealed partial class App : MyUwpBaseApplication
    {
        public App()
        {
            this.InitializeComponent();
        }
    }
}
和xaml:

<local:MyUwpBaseApplication
    x:Class="MyNamespace.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyNamespace">

</local:MyUwpBaseApplication>

我收到两个错误:XAML设计器中的设计时错误以及编译错误:

错误XDG0008中不存在名称“MyUwpBaseApplication” 名称空间 “使用:MyNamespace”。MyNamespace App.xaml 1

我需要基类来使用MvvmCross和Xamarin.Forms。但我收到的错误是一般性的,与这些错误无关

Visual Studio:15.7。 Windows:10名秋季创建者更新


我怎么办

这实际上只是XAML语法中的一个错误,不是继承的问题

您需要在xaml命名空间声明中使用“clr命名空间”而不是“使用”。clr名称空间告诉解析器后面是名称空间的实际名称。如果解析器不识别前缀(并且“using”不是可识别的前缀),则解析器将假定xmlns:local属性的值引用名为“using:MyNamespace”的命名空间映射,该映射显然不存在

因此,在XAML中声明名称空间,如下所示:

xmlns:local="clr-namespace:MyNamespace"

当你开始UWP开发时,事情变得非常奇怪,特别是考虑到这是Windows本机平台开发(你好,Microsoft!)

但是VisualStudio在XAML和UWP方面确实非常“反复无常”

我仍然不知道你应该对这个项目做些什么来实现这一目标的确切原因,但解决方案肯定是其中之一

它肯定与以下方面有关:

  • 以管理员身份运行VisualStudio
  • 删除bin、obj文件夹
  • 清洗溶液
  • 重建项目
至少,在所有这些操作完成之后,项目现在编译得相当好(并且总是独立于bin、obj是否存在)。因此,我在考虑,这可能是在其他地方(除了项目文件夹)缓存构建的二进制文件

一个可能的原因是在一个解决方案中一次有几个UWP项目(至少,当我构建其中一个项目时,错误消息会出现在所有项目上),所以在构建一个项目时,我不得不隐藏其他项目


(仍然应该有
xmlns:local=“using:MyNamespace”
,而不是
clr namespace
(否则会出现其他错误))。

感谢您的快速回答。但是,现在我收到了“名称”UWPApplication0“在名称空间“clr namespace:…”中不存在的错误消息。Visual Studio总是给出这些愚蠢的“错误”。我在VS2015中的xaml与VS2017中的xaml完全相同,但2017给出的愚蠢的“名称”不存在“错误。如果我点击它并按下F12,它会显示出它所说的不存在的东西。因此IDE使用不同的方法来查找编译器需要的资源。是哪个白痴想出的?