千家信息网

dotnet在 UOS 国产系统上如何使用Xamarin Forms创建xaml界面的GTK应用

发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,这篇文章将为大家详细讲解有关dotnet在 UOS 国产系统上如何使用Xamarin Forms创建xaml界面的GTK应用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相
千家信息网最后更新 2024年12月01日dotnet在 UOS 国产系统上如何使用Xamarin Forms创建xaml界面的GTK应用

这篇文章将为大家详细讲解有关dotnet在 UOS 国产系统上如何使用Xamarin Forms创建xaml界面的GTK应用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

下面告诉大家如何在 UOS 国产系统上,通过 Xamarin.Forms 使用 XAML 写界面逻辑,构建出 GTK 应用

小编将使用特别底层的方法告诉大家如何一步步创建,而不是告诉大家如何在 IDE 上进行快速的创建。因此更适合用来告诉大家一些基础的内容,而不适合用来规模化创建上

在开始之前,请确定你安装好了环境,如何安装请看下面博客

  • dotnet 在 UOS 国产系统上安装 MonoDevelop 开发工具

  • dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用

  • dotnet 在 UOS 国产系统上使用 MonoDevelop 进行拖控件开发 GTK 应用

如 dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用 所说,创建一个空白的 GTK# 应用

接着创建一个控制台项目,假定这个项目是 A 项目,这个控制台项目将会添加 Xamarin.Foms 负载,然后将构建出基于 Xamarin.Forms 的界面 dll 文件,接着将由 GTK 项目,假定命名为 B 项目,作为最终原生控件支持,被 Xamarin.Forms 的界面 dll 所映射,因此刚才新建的 GTK 项目就是最终入口项目,应用程序由他启动

修改 csproj 文件为下面内容




netstandard2.0
true



portable
true






有小伙伴说,在 Windows 下,用 VS 新建一个 Xamarin.Forms 项目之后,再拷贝到 UOS 上,也是可以的,但是有一点需要注意的是不能拷贝 binobj 文件夹过去,原因是在 obj 文件夹存放了很多依赖本机电脑的文件夹绝对路径的文件,如 nuget 还原里面的 project.assests.json 文件将会包含 fallback 路径,如果拷贝到 Linux 下的系统,也许会看到如下提示

Error MSB4018 The "ResolvePackageAssets">

或者

Error MSB4018 The "ResolvePackageAssets" task failed unexpectedly. NuGet.Packaging.Core.PackagingException: Unable to find fallback package folder 'C:\Program Files (x86)\Xamarin\NuGet\'

如果忘了这一点复制了 obj 文件夹,可以在 UOS 这个 Linux 系统下删除 obj 文件夹,解决 Xamarin Forms 在 Linux 系统构建失败的问题

先忽略从Windows等系统创建好了 Xamarin Forms 的方法,咱就在 UOS 上一步步创建

删除 A 项目,也就是安装了 Xamarin Forms 的控制台项目,的 Program.cs 文件

然后选择新建一个空 xml 文件,创建完成之后修改命名为 App.xaml 文件,同时创建一个空类叫 App.xaml.cs 文件

这两个文件将表示 Xamarin Forms 项目的起始,也就是在 Xamarin 层的启动入口。在使用 Xamarin.Forms 的 GTK 应用,有两层入口,第一层是本机程序的入口,也就是 B 项目的 Program 文件的 Main 方法入口,第二层就是 Xamarin.Forms 的 App 入口。应用程序启动的时候,先进入第一层入口,在第一层入口初始化本机相关的进程,然后进入第二层入口,在第二层入口初始化 Xamarin 应用

在 App.xaml 添加下面代码,下面代码的 x:Class="WokemhelurnawgelrallKearlallidallla.App" 其实 WokemhelurnawgelrallKearlallidallla 就是项目名


xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="WokemhelurnawgelrallKearlallidallla.App">




其实上面的 App.xaml 是空代码,有意义的代码放在 App.xaml.cs 请看代码

using Xamarin.Forms;

namespace WokemhelurnawgelrallKearlallidallla
{
public partial class App : Application
{
public App()
{
InitializeComponent();

MainPage = new MainPage();
}
}
}

上面代码的核心就是在构造方法调用 InitializeComponent 方法,然后设置主页面

接着咱需要新建一个主界面,新建 MainPage 的 xml 文件,然后修改命名为 MainPage.xaml 文件

然后填写界面代码


xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="WokemhelurnawgelrallKearlallidallla.MainPage">





还请小伙伴先不要改多内容哈

接着新建 MainPage.xaml.cs 文件,添加下面代码

using System.ComponentModel;
using Xamarin.Forms;

namespace WokemhelurnawgelrallKearlallidallla
{
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
}
}

现在新建了 App 应用和 MainPage 一个界面,但是还需要一个 AssemblyInfo.cs 文件,设置程序集特性

using Xamarin.Forms.Xaml;

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

这样一个简单的 Xamarin Forms 项目就完成了,设置 GTK 项目,也就是 B 项目,引用 Xamarin Forms 项目,也就是 A 项目

但是此时将会发现构建不通过,因为 B 项目,也就是 GTK 项目没有引用足够的 NuGet 包。给 B 项目添加以下 NuGet 库

  • OpenTK

  • Xamarin.Forms

  • Xamarin.Forms.Platform.GTK

接着打开 B 项目的 Program.cs 文件,在 Main 方法添加如下代码

            Gtk.Application.Init();
Forms.Init();

var app = new App();
var window = new FormsWindow();
window.LoadApplication(app);
window.SetApplicationTitle("lindexi");
window.Show();
Gtk.Application.Run();

注意在编辑器里面添加 using 引用

然后删除除了 Program.cs 的其他 cs 代码文件

此时 B 项目,构建之后可以看到如下界面

关于dotnet在 UOS 国产系统上如何使用Xamarin Forms创建xaml界面的GTK应用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

项目 文件 应用 界面 系统 代码 入口 国产 也就是 方法 内容 文件夹 就是 程序 二层 拷贝 控制台 本机 控制 小伙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南省集体土地所有权数据库标准 玩台服手游为什么连接不到服务器 c 数据库查询多个条件 徐州物联网智慧工地软件开发 糖果派对软件开发 网络技术开发市场分析 软件开发公司具备条件 戴尔塔式服务器e35 罪恶都市怎么更换服务器 凡风互联网科技有限公司 网络安全对青少年的毒害 河南嘉略网络技术有限公司 服务器的远程管理口 阿里云数据库 锁定中 哪些服务器可以启动多个端口 网络技术it学不学 台式机怎么变成网络服务器 怎么创建数据库关系表 菲比网络技术有限公司 桌面怎么传服务器 福州冠鼎网络技术有限公司 济南钛翔网络技术有限公司 英语培训软件开发 网络安全宣传的心得体会 惠普服务器安装linux 网络安全技术过程性考核册 用八开纸画的网络安全手抄报 网络安全工程师证书作用 江西智能养老软件开发 服务器禁止某个省的电脑访问
0