Skip to content

MS_MonoOnRaspbian

nishi_74322014 edited this page Aug 31, 2026 · 1 revision

Mono On Rasbian

概要

  • CUI と、特に、GUI のサポートがポイント。
  • Windows 10 IoT Core で実装したコードを移植してみたい。

詳細

以下を参照すると、

2 パターンの方法があるらしい。

恐らく、

と思われる。

.NET Fx のバイナリを Mono で実行する。

Mono は、ピュア .NET のバイナリを動作させることができる。

補足(著者が「ナンチャッテ」と評した理由): この方法は、
Windows でビルドした .NET Framework.exe
そのまま Raspberry Pi へ持ち込んで mono app.exe で動かすもの。
手軽だが、

  • Windows Forms は Mono 上では見た目・挙動が完全には一致しない
    (Mono の Windows Forms 実装は不完全なまま開発が止まっている)
  • P/Invoke で Win32 API を呼んでいると動かない
  • レジストリやドライブ レターへの依存も動かない

ため、「ビルドし直さずに動く」ように見えて、
移行・コンバージョン方式で言えば
ポーティング移行の手直しが必要になることが多い。
著者の「ナンチャッテ」という評価は妥当である。

Gtk Sharp を使用して様々なランタイムで実行する。

Gtk Sharp を使って、
Mono or .NET Framework or .NET Core プロジェクトを作成することもできる。

補足(こちらが「本域」である理由): Gtk Sharp
Linux ネイティブの GUI ツールキット(GTK)のバインディングなので、
Raspberry Pi 上で素直に動く。
Windows Forms のように「Windows の見た目を Linux で再現しようとする」
無理がない点が、前者との決定的な違いになる。

ただし、Windows 側で書いたコードをそのまま持ってくることはできず
UI は書き直しになる。つまり、

手軽さ 移植後の安定性
.NET Fx バイナリを Mono で 高い 低い
Gtk Sharp 低い(UI 書き直し) 高い

というトレードオフになる。

補足(現在の選択肢): .NET On Rasbian でも触れたとおり、
Mono は .NET に統合されたため、現在この用途で Mono を選ぶ理由は乏しい。
Raspberry Pi 上で .NET の GUI アプリを作るなら、

  • Avalonia UI — XAML ベース。WPF に近い書き方ができ、
    Linux ARM でも動作する。移植先として現在最も現実的。
  • Gtk Sharp(GtkSharp / Gir.Core) — 本ページの方向の後継。

のいずれかになる。
著者が意図した「Windows 10 IoT Core で実装したコード
UWP / XAML)を移植する」という目的には、
XAML 系の Avalonia UI が最も近い

参考

なべひろBlog

常陸国の電算オタク

Qiita

tana_

移行メモ: 上記「初級 後編」と「パーツサンプル集」は、
元ページで同一の URL が記載されていた(いずれか一方が誤りと思われる)。
どちらが正しいか判断できないため、元の記載のまま残す。

本 Wiki 内


Tags: インフラストラクチャ, IoT, Linux, .NET開発, Mono

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally