やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Eto.ToolkitのCodeEditorを実行できなかった

 前回の続き。

前回

対象環境

手順

 前回のプロジェクトを参照して実行してみる。

1. プロジェクト作成

  1. MonoDevelopを起動する
  2. メニュー→ファイル新しいソリューション
    f:id:ytyaru:20181201194454p:plain
  3. マルチプラットフォームアプリEto Application f:id:ytyaru:20181202083840p:plain
  4. 名前などを適当に入力し、Codeを選択する(HelloEtoCodeEditor)
    f:id:ytyaru:20181202083922p:plain
  5. 場所を入力する
    f:id:ytyaru:20181201194509p:plain
  6. プロジェクトが作成される
    f:id:ytyaru:20181202084143p:plain

2. .NET Standard バージョン指定

  1. ソリューションウインドウからプロジェクトを右クリックする
  2. オプションをクリックする
    f:id:ytyaru:20181215112340p:plain
  3. ビルドターゲットフレームワークから.NET Standard 2.0を選ぶ
    f:id:ytyaru:20181215112408p:plain
  4. ソリューションウインドウのSDK.NET Standardが、2.0.3になっているのを確認する

 これで1.6から2.0にできた。

3. プロジェクトの参照を追加する

 前回作成したプロジェクトを参照する。

  1. ソリューションウインドウからHelloEtoCodeEditorプロジェクトを右クリックする
  2. 追加既存のプロジェクトを追加
    f:id:ytyaru:20181217172146p:plain
  3. 前回の.csprojを選択する
    f:id:ytyaru:20181217172204p:plain
    f:id:ytyaru:20181217172236p:plain
  4. ソリューションウインドウからHelloEtoCodeEditorプロジェクトの依存関係を右クリックする
  5. 参照の編集をクリックする
    f:id:ytyaru:20181217172352p:plain
  6. .NET アセンブリからEto.CodeEditorをクリックする
    f:id:ytyaru:20181217172404p:plain f:id:ytyaru:20181217172453p:plain

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