前回の続き。
前回
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch(9.0) 2018-06-27
- Mono 5.16.0
- MonoDevelop 7.6 build 711
- Eto.Forms 2.4.1 拡張機能, NuGetパッケージ
- .NET Core 2.2, MonoDevelop参照方法
手順
前回のプロジェクトを参照して実行してみる。
1. プロジェクト作成
- MonoDevelopを起動する
- メニュー→
ファイル
→新しいソリューション
マルチプラットフォーム
→アプリ
→Eto Application
- 名前などを適当に入力し、
Code
を選択する(HelloEtoCodeEditor)
場所
を入力する
- プロジェクトが作成される
2. .NET Standard バージョン指定
- ソリューションウインドウからプロジェクトを右クリックする
オプション
をクリックする
ビルド
→ターゲットフレームワーク
から.NET Standard 2.0
を選ぶ
- ソリューションウインドウのSDKの
.NET Standard
が、2.0.3
になっているのを確認する
これで1.6から2.0にできた。
3. プロジェクトの参照を追加する
前回作成したプロジェクトを参照する。
- ソリューションウインドウから
HelloEtoCodeEditor
プロジェクトを右クリックする 追加
→既存のプロジェクトを追加
- 前回の
.csproj
を選択する
- ソリューションウインドウから
HelloEtoCodeEditor
プロジェクトの依存関係
を右クリックする 参照の編集
をクリックする
.NET アセンブリ
からEto.CodeEditor
をクリックする
4. ソースコード
Eto.Toolkit
ソリューション内にあるCodeEditor.cs
をコピペする。ファイル名もそれに変更する。
MainForm.cs
using System; using Eto.Forms; using Eto.Drawing; using Eto.CodeEditor; namespace HelloEtoCodeEditor { public partial class MainForm : Form { public MainForm() { Title = "My Eto Form"; ClientSize = new Size(800, 600); Content = new StackLayout { Padding = 0, Items = { new Eto.CodeEditor.CodeEditor() { Width=800, Height=600 } } }; } } }
5. ビルド
実行ボタンを押してビルドする。自動で実行されないので、直接実行ファイルを叩く。ターミナルで実行すると以下エラー。
$ /tmp/work/Projects/HelloEtoCodeEditor/HelloEtoCodeEditor/HelloEtoCodeEditor.Desktop/bin/Debug/net461/HelloEtoCodeEditor.Desktop.exe [WARNING] Function not found: gtk_normalise_detailed_action_name Unhandled Exception: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: Type for 'Eto.CodeEditor.CodeEditor' could not be found in this platform at Eto.Widget..ctor () [0x0005d] in <6db481985cca4510b36c8dbd12852b82>:0 at Eto.Forms.BindableWidget..ctor () [0x00000] in <6db481985cca4510b36c8dbd12852b82>:0 at Eto.Forms.Control..ctor () [0x00000] in <6db481985cca4510b36c8dbd12852b82>:0 at Eto.CodeEditor.CodeEditor..ctor () [0x00000] in <204ccb2bebe243aeabba03d920631678>:0 at HelloEtoCodeEditor.MainForm..ctor () [0x00043] in <7c3c6bd6b064496284f5bebccf3c9640>:0 at HelloEtoCodeEditor.Desktop.Program.Main (System.String[] args) [0x0000b] in <8e05bf3138054a16af8bf80a059925f1>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: Type for 'Eto.CodeEditor.CodeEditor' could not be found in this platform at Eto.Widget..ctor () [0x0005d] in <6db481985cca4510b36c8dbd12852b82>:0 at Eto.Forms.BindableWidget..ctor () [0x00000] in <6db481985cca4510b36c8dbd12852b82>:0 at Eto.Forms.Control..ctor () [0x00000] in <6db481985cca4510b36c8dbd12852b82>:0 at Eto.CodeEditor.CodeEditor..ctor () [0x00000] in <204ccb2bebe243aeabba03d920631678>:0 at HelloEtoCodeEditor.MainForm..ctor () [0x00043] in <7c3c6bd6b064496284f5bebccf3c9640>:0 at HelloEtoCodeEditor.Desktop.Program.Main (System.String[] args) [0x0000b] in <8e05bf3138054a16af8bf80a059925f1>:0
所感
要点は以下だと思われる。なんのこっちゃ。
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: Type for 'Eto.CodeEditor.CodeEditor' could not be found in this platform