首页 > 其他分享 >UNO WinUI 已知问题 在 XAML 条件构建里将 win 平台加入 Ignorable 将构建失败

UNO WinUI 已知问题 在 XAML 条件构建里将 win 平台加入 Ignorable 将构建失败

时间:2024-09-12 08:56:47浏览次数:1  
标签:git mc win XAML Ignorable 构建 com UNO

如果在 UNO 项目里面,为了进行 XAML 条件构建,将 win 平台加入到 mc:Ignorable 里面,将会在构建时提示 Xaml Internal Error error WMC9999: Unexpected 'NONE' in parse rule 'Element ::= . EmptyElement ( StartElement ElementBody ).'. 错误

如以下的代码,将会在构建时失败,提示 Xaml Internal Error error WMC9999: Unexpected 'NONE' in parse rule 'Element ::= . EmptyElement | ( StartElement ElementBody ).'. 错误

<Page x:Class="KernarjeheeboLawbeeferedai.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:local="using:KernarjeheeboLawbeeferedai"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:not_win="http://uno.ui/not_win"
      Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
      mc:Ignorable="d win not_win">
  <StackPanel
        HorizontalAlignment="Center"
        VerticalAlignment="Center">
    <win:TextBlock AutomationProperties.AutomationId="HelloTextBlock"
                  Text="Hello Uno Platform"
                  HorizontalAlignment="Center" />
    <not_win:TextBlock AutomationProperties.AutomationId="HelloTextBlock"
                       Text="Hello"
                       HorizontalAlignment="Center" />
  </StackPanel>
</Page>

以上的失败仅仅只会在 WinUI 3 平台构建失败,换句话说就是即使新建一个 WinUI 3 项目,直接抄以上的代码也是会出现完全相同的错误信息

失败核心代码在于 mc:Ignorable="d win not_win" 将 win 平台加入到忽略列表里面。本质原因是 win 平台指向的 http://schemas.microsoft.com/winfx/2006/xaml/presentation 刚好就是当前的页面的默认命名空间

换句话说就是 xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 默认命名空间是相同的,这就导致了 Root 元素,即以上代码的 <Page 被忽略掉。因为 <Page 的命名空间就是 http://schemas.microsoft.com/winfx/2006/xaml/presentation 刚好就和加入到 mc:Ignorable 的 win 是相同的

根据 XAML 的规定,加入到 mc:Ignorable 为忽略列表,这也就是 d 设计时可用的原因。加入到 mc:Ignorable 忽略列表里面的元素可以被其他逻辑进行特殊处理,比如说 UNO 的 XAML 处理模块将会处理这些内容作为 XAML 条件构建

在 UNO 的官方文档 里面也有这样一段话,说明了不应该将 win 加入到 Ignorable 里面,内容如下

For prefixes which will be excluded on Windows (e.g. android, ios), the actual namespace is arbitrary, since the Uno parser ignores it. The prefix should be put in the mc:Ignorable list. For prefixes which will be included on Windows (e.g. win, not_android) the namespace should be http://schemas.microsoft.com/winfx/2006/xaml/presentation and the prefix should not be put in the mc:Ignorable list.

根据上文所述的 XAML 规范可知,除了 win 前缀之外,其他的任何使用了 http://schemas.microsoft.com/winfx/2006/xaml/presentation 命名空间的前缀,都不能加入到 mc:Ignorable 里面,比如 win not_android not_ios not_wasm not_macosnot_skia 前缀。更多请看 UNO 的官方文档 里面的列表

本文代码放在 githubgitee 上,可以使用如下命令行拉取代码

先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin eee7d7898c92da0bffd1cba4fdacaa64b3f79c01

以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码,将 gitee 源换成 github 源进行拉取代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin eee7d7898c92da0bffd1cba4fdacaa64b3f79c01

获取代码之后,进入 KernarjeheeboLawbeeferedai 文件夹,即可获取到源代码

更多 UNO 和 WinUI 开发,请参阅我的 博客导航

如有 UNO 开发过程相关问题,欢迎加入 724181515 QQ群讨论

如有国产系统开发的相关问题,欢迎加入 810052083 QQ群讨论

标签:git,mc,win,XAML,Ignorable,构建,com,UNO
From: https://www.cnblogs.com/lindexi/p/18051087

相关文章

  • VisualStudio 通过配置 DefaultXamlRuntime 属性 让控制台项目里的 XAML 应用上智能提
    本文记录一个VisualStudio黑科技,通过配置DefaultXamlRuntime属性,即可让非WPF或WinUI或MAUI等系列类型的项目也可以拥有XAML的智能提示,智能提示方式和WinUI智能提示行为相同比如说在一个控制台项目里面,我期望从控制台开始,定制自己的UI框架,比如说到现在还没有支持......
  • UWP WinUI3 传入 AddHandler 的 RoutedEventHandler 类型与事件所需不匹配将抛出参数
    本文记录一个UWP或WinUI3的开发过程中的问题,当开发者调用AddHandler时,所需的Handler参数类型为RoutedEventHandler类型,然而实际上正确类型是需要与所监听事件匹配才能符合预期工作,否则将抛出缺乏信息的参数异常开始之前先惯例吐槽一下,我从2015开始开发UWP应用,然而......
  • 【CSS in Depth 2 精译_028】第五章 网格布局 + 5.1 构建基础网格
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第一章层叠、优先级与继承(已完结)1.1层叠1.2继承1.3特殊值1.4简写属性1.5CSS渐进式增强技术1.6本章小结第二章相对单位(已完结)2.1相对单位的威力2.2em与rem2.3告别像素思维2.4视口的相对单位2.5......
  • win32私有网盘系统
       客户端:win10服务端:openoular完全自主源代码实现..... 网盘文件加解密支持:简单加密、des加解密、aes加解密、国密sm4加解密一份原文4份密文.....删的安心,用的放心支持所有文件格式......支持ukey证书登录支持国产化华为openoular系统部署....需要联系QQ:2581......
  • Windows下实现Nginx文件下载服务器功能
    下载Nginx文件text本机的版本为:nginx-1.24.0[http://nginx.org/download/nginx-1.24.0.zip]()配置nginx.conf文件,配置内容如下:`propertiesserver{ #服务监听端口、绑定IP、监听方式的配置listen8000;listenlocalhost:8080; #定义了服务器......
  • Guitar Pro 8.2.1 Build 32中文解锁版+Soundbanks Win/Mac音色库 开心激活版
    GuitarPro8.2.1Build32开心版软件是一个受吉他手喜爱的吉他和弦、六线谱、BASS四线谱绘制、打印、查看、试听软件,它也是一款优秀的MIDI音序器,MIDI制作辅助工具,可以输出标准格式的MIDI。GP的过人之处就在于它可以直接用鼠标和键盘按标准的六线谱、四线谱进行乐谱输入......
  • 如何快速构建RTMP直播推送业务场景?
    大牛直播SDK跨平台RTMP直播推送模块,始于2015年,支持Windows、Linux(x64_64架构|aarch64)、Android、iOS平台,支持采集推送摄像头、屏幕、麦克风、扬声器、编码前、编码后数据对接,功能强大,性能优异,配合大牛直播SDK的SmartPlayer播放器,轻松实现毫秒级的延迟体验,满足大多数行业的使用场景......
  • Windows电脑使用VNC远程连接本地局域网无公网IP树莓派5
    文章目录前言1.使用RaspberryPiImager安装RaspberryPiOS2.Windows安装VNC远程树莓派3.使用VNCViewer公网远程访问树莓派3.1安装Cpolar步骤3.2配置固定的公网地址3.3VNC远程连接测试4.固定远程连接公网地址4.1固定TCP地址测试前言树莓派因其小巧的......
  • 如何构建第一个springboot工程
    如何构建第一个springboot工程SpringBoot简单介绍spring框架是轻量级的,但它的配置却是重量级的所以就在原有spring框架的基础上,通过注解的方式进一步简化spring框架的使用,并基于spring框架开发了全新的springboot框架,需要说明的是:springboot不是替代spring的解决......
  • Consul Windows部署
    一、Consul下载下载地址:Install|Consul|HashiCorpDeveloper本次使用Windows版本下载解压后,可看到consul.exe文件二、ConsulServer配置为了方便使用增加server-config.hcl和server-start.bat文件(一)server-config.hcl配置文件#节点名称node_name="my-consul......