国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#winform軟件移植上linux的秘密,用GTK開發(fā)System.Windows.Forms

這篇具有很好參考價(jià)值的文章主要介紹了C#winform軟件移植上linux的秘密,用GTK開發(fā)System.Windows.Forms。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  國產(chǎn)系統(tǒng)大勢所趨,如果你公司的winform界面軟件需要在linux上運(yùn)行,如果軟件是用C#開發(fā)的,現(xiàn)在我有一個(gè)好的快速解決方案。

  世界第一的微軟的Microsoft Visual Studio,確實(shí)好用,C# 開發(fā)起來確實(shí)效率高,不過微軟的開發(fā)語言開發(fā)的軟件的界面都是跟windows系統(tǒng)綁定的,現(xiàn)在.net core已經(jīng)支持linux系統(tǒng)了,但是僅限于控制臺(tái)應(yīng)用程序,不包含WindowDesktop,所以是不支持原生有界面的.net 軟件的,微軟語言的軟件界面所用的API基本都封裝在System.Windows.Forms.dll上了,所以用支持linux的工具重新開發(fā)System.Windows.Forms類庫就能讓C#軟件的界面在linux運(yùn)行!

  首先,必須是.net core 框架開發(fā)C#軟件的,工程框架要改成控制臺(tái),C#軟件升級(jí)開發(fā)框架也是很容易。其次,安裝GTK環(huán)境,基本是一鍵安裝完成。

  最近機(jī)緣巧合,公司軟件需要移植上linux運(yùn)行,研究后發(fā)現(xiàn),軟件太復(fù)雜,開發(fā)了十幾年的軟件,重新開發(fā)工程量就很大,而且程序的復(fù)雜性都無法保證能移植成功。就突發(fā)奇想,如果把GTK表單控件封裝成C#的控件直接替換c#的原生表單控件不就行了嗎?然后試了一下確實(shí)可以!而且能保留VS的原生可視化開發(fā)。目前已經(jīng)實(shí)現(xiàn)了常用的表單控件、容器、菜單、數(shù)據(jù)表、選擇器,先看效果:

C#winform軟件移植上linux的秘密,用GTK開發(fā)System.Windows.Forms

?文章來源地址http://www.zghlxwxcb.cn/news/detail-528840.html

封裝起來是很復(fù)雜的,GTK提供的是基礎(chǔ)組件,要把組件拆分重新組合成微軟原生控件的組成結(jié)構(gòu),并且要實(shí)現(xiàn)相關(guān)的功能。 有些微軟的表單控件GTK是沒有,需要自制,如掩碼輸入框、日期選擇框、選擇框列表,DataGridView是用GTK.TreeView來封裝實(shí)現(xiàn)的,很多控件的賦值方法和數(shù)據(jù)源模式都不一樣,也需要改。我封裝的控件都實(shí)現(xiàn)了C#原生控件的常用屬性、事件、方法,以保證與原生程序兼容。

C#winform軟件移植上linux的秘密,用GTK開發(fā)System.Windows.Forms

?

需要說明一下,界面或工程資源文件的圖片資源在生成程序后是經(jīng)過加密的,而微軟件圖像類和資源讀取方法類庫都是放在WindowDesktop庫上,控制臺(tái)工程是沒有相關(guān)的類庫的,所以無法讀取。Form圖像處理有個(gè)麻煩的地方,界面有任何變動(dòng),F(xiàn)orm.Designer圖像程序的讀程序都會(huì)自動(dòng)更新為System.ComponentModel.ComponentResourceManager,所以自定義命名空間是不行的,一變動(dòng)又要修正。

我的解決方法是自已寫System.Drawing.Image和System.Drawing.Bitmap,自寫System.ComponentModel.ComponentResourceManager類讀取圖片,把Form界面的xxx.resx源文件復(fù)制到一個(gè)文件夾內(nèi),直接當(dāng)成XML文件來讀取,就能把里面的圖像讀取出來,然后轉(zhuǎn)成byte[]數(shù)據(jù)傳給Bitmap。

在使用封裝好的引用的System.Windows.Forms.DLL時(shí),還需要引用System.Resources.Extensions,這個(gè)在實(shí)現(xiàn)程序里用不上,但是VS開發(fā)需要,而且有些版本的還不行,會(huì)出錯(cuò),經(jīng)過測試用.net core2的版本可以

C#winform軟件移植上linux的秘密,用GTK開發(fā)System.Windows.Forms

?

最后,控制臺(tái)框架開發(fā)是沒有界面的,而Form界面在控制臺(tái)框架工程里默認(rèn)也不能打開的,但是可以改配置來修正,只需要把obj目錄子目錄下找到xxxx.designer.runtimeconfig.json文件,把NetCore改成WindowDesktop即可,需要重啟VS,如下紅字

"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.WindowsDesktop.App",
"version": "6.0.0"
},

然后就可以在控制臺(tái)框架下愉快的開發(fā)表單界面了。

?

到了這里,關(guān)于C#winform軟件移植上linux的秘密,用GTK開發(fā)System.Windows.Forms的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenSSH移植到Linux開發(fā)板

    OpenSSH移植到Linux開發(fā)板

    在Linux開發(fā)中,有時(shí)候需要遠(yuǎn)程登錄到開發(fā)板上對(duì)系統(tǒng)進(jìn)行一些操作,這個(gè)時(shí)候就需要用到SSH服務(wù)。SSH(Secure Shell 安全外殼協(xié)議)是較可靠,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議,OpenSSH是SSH協(xié)議的一個(gè)免費(fèi)開源版本。 這里一共需要移植三個(gè)軟件包: zlib,openss

    2023年04月26日
    瀏覽(24)
  • 嵌入式開發(fā)之linux內(nèi)核移植

    嵌入式開發(fā)之linux內(nèi)核移植

    目錄 ?前言 一、下載內(nèi)核源碼 1.1 下載linux-3.0.1 1.2 解壓源碼文件 二、 內(nèi)核添加yaffs2文件系統(tǒng)支持 2.1 下載yaffs2 2.2 內(nèi)核添加yaffs2文件補(bǔ)丁 三、配置開發(fā)板 3.1 修改機(jī)器ID 3.2 添加開發(fā)板初始化文件 3.3 配置NandFalsh 3.3.1 添加NandFlash設(shè)備 3.3.2 添加NandFlash驅(qū)動(dòng) 3.3 修改Kconfig(支持

    2024年02月07日
    瀏覽(103)
  • FTP服務(wù)器移植到Linux開發(fā)板

    FTP服務(wù)器移植到Linux開發(fā)板

    提示:寫完文章后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內(nèi)容: 將Linux開發(fā)板作為一個(gè)小型的 FTP 服務(wù)器,這樣就可以通過 FileZilla 軟件直接在開發(fā)板和 windows 之間通過網(wǎng)絡(luò)進(jìn)行文件互傳。在開發(fā)板上搭建 FTP 服務(wù)器很簡單

    2024年02月14日
    瀏覽(22)
  • 嵌入式Linux底層系統(tǒng)開發(fā) +系統(tǒng)移植+內(nèi)核文件系統(tǒng)(基礎(chǔ))

    嵌入式Linux底層系統(tǒng)開發(fā) +系統(tǒng)移植+內(nèi)核文件系統(tǒng)(基礎(chǔ))

    搭建交叉編譯開發(fā)環(huán)境 bootloader的選擇和移植 kernel的配置、編譯、移植和調(diào)試 根文件系統(tǒng)的制作 前兩個(gè)要點(diǎn)通常芯片廠家提供。后邊兩個(gè)要點(diǎn)是公司的工作重點(diǎn)。 學(xué)習(xí)方法:先整體后局部,層層推進(jìn) 如何編譯—如何添加命令和功能—如何定義自己的開發(fā)板。 移植的基本步

    2024年02月03日
    瀏覽(101)
  • 記錄移植Python3到arm開發(fā)板linux系統(tǒng)中

    開發(fā)板情況 arm板是公司采購的工控機(jī)。主要用來 使用python3解析excel表格處理數(shù)據(jù)。 配置如下: 配置 版本 cpu imx6dl(armv7架構(gòu)) 操作系統(tǒng) linux3.10 python版本 2.7 項(xiàng)目情況 項(xiàng)目中最好使用 python3 。可行的有以下幾種方式: 方式 優(yōu)缺點(diǎn) 可行度 重做文件系統(tǒng) 訂制程度比較高,后期增

    2024年02月04日
    瀏覽(36)
  • 基于全志A33開發(fā)板linux系統(tǒng)移植學(xué)習(xí)記錄(Boot0)

    第一章 Boot0基于ARMGCC的編譯與修改 入行快兩年,希望通過學(xué)習(xí)系統(tǒng)移植鞏固下相關(guān)的知識(shí),目標(biāo)板使用基于全志A33 的astar-parrot開發(fā)板,開始本來想著使用Boot0來加載uboot,但后期發(fā)現(xiàn)為了代碼統(tǒng)一和便捷性,最終還是選擇了SPL作為跳板,但Boot0流程相對(duì)清晰,所以將對(duì)其做的

    2023年04月08日
    瀏覽(18)
  • 嵌入式linux驅(qū)動(dòng)開發(fā)之移遠(yuǎn)4G模塊EC800驅(qū)動(dòng)移植指南

    嵌入式linux驅(qū)動(dòng)開發(fā)之移遠(yuǎn)4G模塊EC800驅(qū)動(dòng)移植指南

    回顧下移遠(yuǎn)4G模塊移植過程, 還是蠻簡單的。一通百通,無論是其他4G模塊都是一樣的。這里記錄下過程,分享給有需要的人。環(huán)境使用正點(diǎn)原子的imax6ul開發(fā)板,板子默認(rèn)支持中興和移遠(yuǎn)EC20的驅(qū)動(dòng),這里要移植使用的是移遠(yuǎn)4G模塊EC800。 imax6ul開發(fā)板 虛擬機(jī)(Ubuntu18.04) 交叉編譯

    2024年02月17日
    瀏覽(52)
  • 基于RK3588的嵌入式linux系統(tǒng)開發(fā)(二)——uboot源碼移植及編譯

    基于RK3588的嵌入式linux系統(tǒng)開發(fā)(二)——uboot源碼移植及編譯

    ??????? 由于官方的SDK占用空間較大(大約20GB左右),需要聯(lián)系相關(guān)供應(yīng)商提供,且官方的SDK通過各種腳本文件進(jìn)行集成編譯,難以理解系統(tǒng)開發(fā)的詳細(xì)過程。本章介紹直接從官方Github網(wǎng)站下載源碼進(jìn)行移植,進(jìn)行uboot移植及編譯,具體內(nèi)容如下所述: 1.進(jìn)入官方的github網(wǎng)

    2024年01月16日
    瀏覽(27)
  • EtherCAT 開源主站 IGH 在 linux 開發(fā)板的移植和伺服通信測試

    EtherCAT 開源主站 IGH 在 linux 開發(fā)板的移植和伺服通信測試

    手邊有一套正點(diǎn)原子linux開發(fā)板imax6ul,一直在吃灰,周末業(yè)余時(shí)間無聊,把EtherCAT的開源IGH主站移植到開發(fā)板上玩玩兒,搞點(diǎn)事情做。順便學(xué)習(xí)研究下EtherCAT總線協(xié)議及其對(duì)伺服驅(qū)動(dòng)器的運(yùn)動(dòng)控制過程。實(shí)驗(yàn)很有意思,這里總結(jié)下實(shí)驗(yàn)過程,分享給有需要的小伙伴。 igh EtherC

    2024年04月29日
    瀏覽(322)
  • linux驅(qū)動(dòng)開發(fā) ST7789 LCD驅(qū)動(dòng)移植(I.MX6ULL平臺(tái))

    linux驅(qū)動(dòng)開發(fā) ST7789 LCD驅(qū)動(dòng)移植(I.MX6ULL平臺(tái))

    前言 I.MX6ULL的板子未選配RGB的屏幕,無法在板子上進(jìn)行GUI的開發(fā)調(diào)試,不過手頭上有塊控制器為ST7789V3的LCD屏幕(1.3inch),通過簡易接線后可以很方便進(jìn)行驅(qū)動(dòng)的移植 如有異議,歡迎留言指正 ST7789 LCD控制器 ST7789是一款單芯片TFT-LCD控制器,支持并口與SPI通信方式 特性 控制器支

    2023年04月09日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包