2021年7月6日火曜日

Ubuntu 滅茶苦茶珍道中 其の漆 お試し Mono

Windows 上の .Netframework 依存の 自作アプリ を、
Ubuntu(Linux) 上で動かしたり開発したりする 環境 を提供する、
Mono (MonoDevelop) 。
試して見ますか?。


Mono  Cross platform, open source .NET framework

https://www.mono-project.com/ が 公式サイト ですね。
其処には、冒頭に以下の記述があります。

Mono is a software platform designed to allow developers to easily create cross platform applications part of the .NET Foundation.

GUI は OS 毎の Graphic Module に依存しますから、
基本的には、
OS 毎に異なる GUI が必要でした。

Windows なら、GDI+ や UWP や WPF 等。
Ubunto 等 Linux (X11)なら、GTK 。

CUI なら、依存度が低く、壁も 薄く低い訳ですが、
GUI になると ... 。

.Netframework を提供していた Microsoft さま は Multi Platform に対応する為、
.Net Core そして .Net への移行を進めています。
そう、謂わば、今は 過渡期! 。

Mono は .Net Core 直前の環境 を 他の OS に持ち込めます。  の、様です。
以前の公表では、WPF は 除外 扱い。  従って、GUI は Form が主体、との事。


  ちょっと、脱線しますね。
  Ubuntu を使い出して、気付かされたのは、
  Windows では 自分で書いた サポート アプリ 群 が 有効に機能していますが、
  Ubuntu(Linux) には 開発環境 を入れておらず、
  また、開発言語も異なる事から、
  痛い(痒い)処に手が届かない! を思い知らされる事になったのです。

  入れていない、と書きましたが、 確か、Python は OS 標準で 入っていた筈ですが ... 。
  私は、此れを使って、開発に着手! と言うレベルではありません。  (現在は。)

  サポート アプリ は 自分の環境に依存する形で書いてあり、
  汎用アプリ 等の 機能不足 を補っています。

  無論、OS に慣れていない事が、其れに輪を掛けます。

  或る意味、手を捥ぎ取られた状態。
  ああ!、 と、嘆きの 溜息 ... 。


OS 依存する部分に気を付けて書いてあれば、
Windows の Visul Studio で 自動生成した Form アプリの .exe が、
Ubuntu(Linax) 上で、Mono 経由を条件に、動くのです。

実際に、Windows 上で作成した実行ファイルが そのままで 動くのは 驚き! でした。
下図は、Windows 上で稼働する、OS Native と Ubuntu Mono (Remote Desktop) 経由 との様子です。   同一バイナリ。


  OS 依存する部分;

  実行時に、OS を判別し、条件分岐するのが最低限必要です。
  そうすれば、ひとつの実行ファイルで使い廻しが可能ですね。

  ファイルパスは、
  Windows では 各ドライブレターから始まり、区切り記号 ¥ ですが、
  Ubuntu では / から始まる単一ツリーに、区切り記号 / で、各ドライブ等も含めてマウントされます。
  ファイルやパス等に係る 文字列 の 大文字小文字 の違いも留意が必要!。
  外部プロセスを呼ぶ場合も、
  Windows は C:¥Program Files 等に存在するのが標準ですが、
  Ubuntu では アプリを取得した方法に依存して、まちまちですね。
  /user/bin や /snap/bin 等。
  そう、確認は必須でしょう。

でも、過渡期感は免れません。
.Net 6 (LTS) 正式公開を待つのが正解なのかも。
急ぐのなら、.Net 5 (Current) でも良いのかも知れませんが。
個人的には、
Visual Studio 2022 & .Net 6 登場を待ってから判断したいと思っています。


其れ迄は、暫定的に、Mono (Runtime) を使う事もあり! でしょう。
但し、現状では、色々と、妥協する点があるのも、事実!。  其れは。後日に。

Mono 導入方法や、 実行ファイル実行については、割愛させて戴きます。



[2021/07/06] リンク化、引用形式、図に注記等を挿入

0 件のコメント:

コメントを投稿