技术标签: c# # MAUI android MAUI windows
在2020年5月, 微软宣布了MAUI跨平台框架, MAUI 是Xamarin.Forms演变而来, 这也就意味着, 如果你原来具备Xamarin.Forms开发经验, 你可以流畅的过渡到MAUI开发当中。
原本于2021年底发布的MAUI正式版被推迟到了2022年5月底发布。现在, 你目前可以通过安装VS2022 预览版进行安装MAUI开发选项。此版本中, 将不会存在Xamarin.Forms项目模板。
Xamarin.Forms | .NET MAUI |
---|---|
![]() |
![]() |
Xamarin.Forms和.NET MAUI之间的主要区别在于它们的项目结构。
Xamarin.Forms | MAUI |
---|---|
每个平台维护一个单独的项目 | 一个项目支持多个平台 |
平台相关的代码在不同项目中单独维护 | 在Platforms文件夹中维护 |
使用Xamarin.Forms,开发人员可能会在处理针对多个平台的多个项目时感到繁琐。图像,字体和平台相关代码的维护;添加不同的依赖项,并在它们被引用为 NuGet 包时解析它们。 | 遇到这些问题后,开发人员现在可以在 .NET MAUI 中通过单个项目得到解决。 |
由于 .NET MAUI 是一个简单的项目应用,因此它可以在基于多目标的结构上运行。.NET MAUI 应用包含一个 “Platforms” 文件夹,其子文件夹表示 Android、iOS Maccatalyst 和 Windows 等平台,以定位在平台上启动应用的特定于平台的代码。它也可以根据您自己的文件名进行多目标。
.NET MAUI在资源方面接管了Xamarin,特别是在图像方面。您无需维护一组映像即可满足特定于平台或设备的需求。单个 SVG 图像足以满足所有平台和设备要求。SVG图像被转换为.png图像,以便在所有平台上工作。
Xamarin.Forms | .NET MAUI |
---|---|
资源包括图像和类。 | 资源包括MauiImage和MauiResources等类。 |
需要为特定于平台的设备维护基于分辨率的图像。 | 借助 SVG 图像,无需维护特定于平台或特定于设备的图像。 |
需要为每个平台单独维护资源文件。 | 资源可以在单个位置进行维护。 |
在 Xamarin 中,没有可用于满足任何绘图要求的直接 API。您必须使用渲染器在本机端执行此操作。但.NET MAUI现在抽象化了本机绘图,并为您带来了更好的图形 API。.NET MAUI中的跨平台图形功能提供了用于绘制和绘制形状的绘图画布。画笔是主要类型。
Xamarin.Forms | .NET MAUI |
---|---|
没有可用的图形。 | 图形模式,如绘画,混合可用。 |
无法自定义绘图。 | 支持绘制图形 |
颜色 | 画笔 |
配置资源和服务 |
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
return builder.Build();
}
创建MAUI项目之前, 首先确保您的电脑已经安装MAUI开发选项
设置项目名称以及解决方案保存位置, 完成创建。
创建完成后, 整个项目解决方案如下所示。
转自 http://blog.csdn.net/myxmu/article/details/7985549
class template {private $vars = array();private $conf = '';private $tpl_name = 'index';//如果模板不存在 会查找当前 controller默认index模板private $tpl_suffix = '.html';//如果CONFIG没配置默认后缀 则显示private $tpl_compile_suffix..._private $template;
/*报错为DELETE 语句与 REFERENCE 约束"FK_ProductInfo_Category"冲突。该冲突发生于数据库"eshop",表"dbo.ProductInfo", column 'CategoryId'。DELETE 语句与 REFERENCE 约束"FK_ShoppingCart_ProductInfo"冲突。该冲突发生于数据库"eshop",表"dbo.Sho
所以我们有必要知道如何通过xmlspy这个非常方便的工具进行xml的转换工作。点击“File”-“New”系统会弹出“create new document”的窗口,此时选择“xml XML document”点击“ok”,并选择“Schema”单选框。粘贴你的样本xml。样板xml内容如下:StringStringStringStringStringStringStringStringStrin..._generate dtd/schema
1.说明Toast要求必须再UI线程中才能显示,Service默认是再主UI线程上
我们提出了一种用于图像分类的简单、高度模块化的网络架构。我们的网络是通过重复一个构建块来构建的,该构建块聚合了一组具有相同拓扑的转换。我们简单的设计产生了一个同构的多分支架构,只需设置几个超参数。这个策略暴露了一个新的维度,我们称之为“基数”(转换集的大小),作为除了深度和宽度维度之外的重要因素。在 ImageNet-1K 数据集上,我们凭经验表明,即使在保持复杂性的限制条件下,增加基数也能够提高分类精度。此外,当我们增加容量时,增加基数比更深或更宽更有效。_resnext残差单元
谷歌浏览器控制台获取元素坐标方法实例1、以谷歌浏览器为例,找了好多实例但是没有找,琢磨了好几天终于找到答案,再次留下笔记;2、打开谷歌浏览器,以bing为例,网址:http:cn.bing.com,打开控制台Console,比如我们想查看"国内版"标签在浏览器上面的相对坐标,右键检查“<div id="est_cn" class="est_selected">国内版</d..._获取浏览器弹出窗口坐标 ahk
就是在显示容器列表的命令后面加上--no-trunc,大概是不省略的意思比如docker ps -a --no-trunc然后,本来是这样的会变成这样(上面那串是容器长id)当然大部分容器的命令是都是不同的,例子里用的是SQLstream。我试了一下,这段命令大概是分3段,第一段是"/bin/sh -C",第二段"/etc/init.d/startblaze"第三段"..._docker 查看容器的command
Amos Q. Haviv是一位软件工程师、技术顾问,他还是MEAN.IO和MEAN.JS的创建者。Amos有近十年的全栈开发经验,曾就职于多个创业公司和企业。从2011年起,Amos使用JavaScript的全栈解决方案进行开发,包括Node.js和MongoDB,以及AngularJS一类的前端MVC框架。2013年,他创建了MEAN..._amos是用什么语言开发的
官方文档链接: bloc添加依赖将bloc的包作为依赖项(dependencies) 添加到我们的pubspec.yaml中在bloc依赖库中选取合适的版本依赖 flutter_bloc: ^6.1.2dependencies: flutter: sdk: flutter http: ^0.12.2 json_annotation: ^3.1.1 # 此处为添加的依赖 flutter_bloc: ^6.1.2dev_dependencies: flutter_te_bloc statelesswidget
python -m pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com muggle-ocr
不知道怎么用着用着,使用kubectl 时报错,错误如下:root@R740-2-2:~# kubectl get podThe connection to the server 107.105.136.28:6443 was refused - did you specify the right host or port?$systemctl status kubel...