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