這篇文章將為大家詳細(xì)講解有關(guān)dotnet在 UOS 國(guó)產(chǎn)系統(tǒng)上如何使用Xamarin Forms創(chuàng)建xaml界面的GTK應(yīng)用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
為隆德等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及隆德網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、隆德網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
下面告訴大家如何在 UOS 國(guó)產(chǎn)系統(tǒng)上,通過(guò) Xamarin.Forms 使用 XAML 寫界面邏輯,構(gòu)建出 GTK 應(yīng)用
小編將使用特別底層的方法告訴大家如何一步步創(chuàng)建,而不是告訴大家如何在 IDE 上進(jìn)行快速的創(chuàng)建。因此更適合用來(lái)告訴大家一些基礎(chǔ)的內(nèi)容,而不適合用來(lái)規(guī)?;瘎?chuàng)建上
在開(kāi)始之前,請(qǐng)確定你安裝好了環(huán)境,如何安裝請(qǐng)看下面博客
dotnet 在 UOS 國(guó)產(chǎn)系統(tǒng)上安裝 MonoDevelop 開(kāi)發(fā)工具
dotnet 在 UOS 國(guó)產(chǎn)系統(tǒng)上使用 MonoDevelop 創(chuàng)建 GTK 全平臺(tái)帶界面應(yīng)用
dotnet 在 UOS 國(guó)產(chǎn)系統(tǒng)上使用 MonoDevelop 進(jìn)行拖控件開(kāi)發(fā) GTK 應(yīng)用
如 dotnet 在 UOS 國(guó)產(chǎn)系統(tǒng)上使用 MonoDevelop 創(chuàng)建 GTK 全平臺(tái)帶界面應(yīng)用 所說(shuō),創(chuàng)建一個(gè)空白的 GTK# 應(yīng)用
接著創(chuàng)建一個(gè)控制臺(tái)項(xiàng)目,假定這個(gè)項(xiàng)目是 A 項(xiàng)目,這個(gè)控制臺(tái)項(xiàng)目將會(huì)添加 Xamarin.Foms 負(fù)載,然后將構(gòu)建出基于 Xamarin.Forms 的界面 dll 文件,接著將由 GTK 項(xiàng)目,假定命名為 B 項(xiàng)目,作為最終原生控件支持,被 Xamarin.Forms 的界面 dll 所映射,因此剛才新建的 GTK 項(xiàng)目就是最終入口項(xiàng)目,應(yīng)用程序由他啟動(dòng)
修改 csproj 文件為下面內(nèi)容
netstandard2.0
true
portable
true
有小伙伴說(shuō),在 Windows 下,用 VS 新建一個(gè) Xamarin.Forms 項(xiàng)目之后,再拷貝到 UOS 上,也是可以的,但是有一點(diǎn)需要注意的是不能拷貝 bin
和 obj
文件夾過(guò)去,原因是在 obj 文件夾存放了很多依賴本機(jī)電腦的文件夾絕對(duì)路徑的文件,如 nuget 還原里面的 project.assests.json 文件將會(huì)包含 fallback 路徑,如果拷貝到 Linux 下的系統(tǒng),也許會(huì)看到如下提示
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\'
如果忘了這一點(diǎn)復(fù)制了 obj 文件夾,可以在 UOS 這個(gè) Linux 系統(tǒng)下刪除 obj 文件夾,解決 Xamarin Forms 在 Linux 系統(tǒng)構(gòu)建失敗的問(wèn)題
先忽略從Windows等系統(tǒng)創(chuàng)建好了 Xamarin Forms 的方法,咱就在 UOS 上一步步創(chuàng)建
刪除 A 項(xiàng)目,也就是安裝了 Xamarin Forms 的控制臺(tái)項(xiàng)目,的 Program.cs 文件
然后選擇新建一個(gè)空 xml 文件,創(chuàng)建完成之后修改命名為 App.xaml 文件,同時(shí)創(chuàng)建一個(gè)空類叫 App.xaml.cs 文件
這兩個(gè)文件將表示 Xamarin Forms 項(xiàng)目的起始,也就是在 Xamarin 層的啟動(dòng)入口。在使用 Xamarin.Forms 的 GTK 應(yīng)用,有兩層入口,第一層是本機(jī)程序的入口,也就是 B 項(xiàng)目的 Program 文件的 Main 方法入口,第二層就是 Xamarin.Forms 的 App 入口。應(yīng)用程序啟動(dòng)的時(shí)候,先進(jìn)入第一層入口,在第一層入口初始化本機(jī)相關(guān)的進(jìn)程,然后進(jìn)入第二層入口,在第二層入口初始化 Xamarin 應(yīng)用
在 App.xaml 添加下面代碼,下面代碼的 x:Class="WokemhelurnawgelrallKearlallidallla.App"
其實(shí) WokemhelurnawgelrallKearlallidallla 就是項(xiàng)目名
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">
其實(shí)上面的 App.xaml 是空代碼,有意義的代碼放在 App.xaml.cs 請(qǐng)看代碼
using Xamarin.Forms;
namespace WokemhelurnawgelrallKearlallidallla
{
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
}
}
上面代碼的核心就是在構(gòu)造方法調(diào)用 InitializeComponent 方法,然后設(shè)置主頁(yè)面
接著咱需要新建一個(gè)主界面,新建 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">
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" />
還請(qǐng)小伙伴先不要改多內(nèi)容哈
接著新建 MainPage.xaml.cs 文件,添加下面代碼
using System.ComponentModel;
using Xamarin.Forms;
namespace WokemhelurnawgelrallKearlallidallla
{
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
}
}
現(xiàn)在新建了 App 應(yīng)用和 MainPage 一個(gè)界面,但是還需要一個(gè) AssemblyInfo.cs 文件,設(shè)置程序集特性
using Xamarin.Forms.Xaml;
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
這樣一個(gè)簡(jiǎn)單的 Xamarin Forms 項(xiàng)目就完成了,設(shè)置 GTK 項(xiàng)目,也就是 B 項(xiàng)目,引用 Xamarin Forms 項(xiàng)目,也就是 A 項(xiàng)目
但是此時(shí)將會(huì)發(fā)現(xiàn)構(gòu)建不通過(guò),因?yàn)?B 項(xiàng)目,也就是 GTK 項(xiàng)目沒(méi)有引用足夠的 NuGet 包。給 B 項(xiàng)目添加以下 NuGet 庫(kù)
OpenTK
Xamarin.Forms
Xamarin.Forms.Platform.GTK
接著打開(kāi) B 項(xiàng)目的 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 代碼文件
此時(shí) B 項(xiàng)目,構(gòu)建之后可以看到如下界面
關(guān)于dotnet在 UOS 國(guó)產(chǎn)系統(tǒng)上如何使用Xamarin Forms創(chuàng)建xaml界面的GTK應(yīng)用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。