前回の続き。
前回
対象環境
- 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