从其他基于应用程序的类继承UWP Application类时,名称“AppClass”在名称空间“...”中不存在

时间:2018-06-10 15:32:37

标签: xamarin.forms uwp mvvmcross

我想要实现的只是继承UWP App类而不是来自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个秋季创作者更新。

我该怎么处理?

2 个答案:

答案 0 :(得分:4)

当你进入UWP开发时,事情变得非常奇怪,特别是考虑到这是Windows Native平台开发(你好微软!)

但是,Visual Studio真的很反复无常&#34;一般是XAML,特别是UWP。

我仍然不知道您应该如何使用该项目来完成这项工作,但解决方案绝对属于 these hints

它肯定有以下内容:

  • 以管理员身份运行Visual Studio
  • 删除bin,obj文件夹
  • 清洁解决方案
  • 重建项目

至少,在完成所有这些操作之后,项目现在编译得非常好(并且始终独立于bin,obj是否存在)。所以,我正在考虑,这可能是在其他地方(除了项目文件夹之外)对已构建的二进制文件进行一些缓存的事情。

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

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

答案 1 :(得分:-1)

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

您需要在xaml名称空间声明中使用“clr-namespace”而不是“using”。 clr-namespace告诉解析器接下来是名称空间的实际名称。如果它不识别前缀(并且“using”不是识别的前缀),则解析器假定xmlns:local属性的值是指名为“using:MyNamespace”的名称空间映射,这显然不存在。

因此,在XAML中声明命名空间如下:

xmlns:local="clr-namespace:MyNamespace"

你会很高兴。