やってみる

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

Raspbian stretch MonoDevelop .NET コンソールアプリ プロジェクトで EFCore を実行するもエラー(The type 'DbConnection' is defined in an assembly that is not referenced. )

 参照エラーと思われる。

前回

 libe_sqlite3.soファイルを作成して実行ファイルのディレクトリに配置することで「System.DllNotFoundException: e_sqlite3」エラーは解決した。が、Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: *'.のエラーが解決できない。

 一旦Eto.Formをやめて単純なコンソールプロジェクトで試そうとしたら、.NET Coreのコンソールプロジェクトはデフォルトの状態ですでにビルドできない有様。でも.NET Frameworkプロジェクトならビルドできた。

対象環境

手順

  1. プロジェクト作成
  2. パッケージ追加

1. プロジェクト作成

  1. MonoDevelopを起動する
  2. メニュー→ファイル新しいソリューション
    f:id:ytyaru:20181201194454p:plain
  3. その他.NETコンソールアプリケーションを選択する
    f:id:ytyaru:20181216143329p:plain
  4. プロジェクトを右クリックしてオプションをクリックする
  5. ビルド全般ターゲットフレームワーク.NET Framework 4.7.1になっている(.NET Core 1.1(インストールされていません)ではない)ことを確認する
    f:id:ytyaru:20181216143425p:plain

2. パッケージ追加

  1. メニュー→プロジェクトNuGet パッケージの追加
    f:id:ytyaru:20181201194958p:plain
  2. パッケージを追加ダイアログから欲しいパッケージを探す
    f:id:ytyaru:20181216144054p:plain

  3. Microsoft.EntityFrameworkCore 2.2.0

  4. Microsoft.EntityFrameworkCore.Design 2.2.0
  5. Microsoft.EntityFrameworkCore.Tools 2.2.0
  6. Microsoft.EntityFrameworkCore.Sqlite 2.2.0

 Microsoft製のパッケージが同意を求めまくってウザい。

f:id:ytyaru:20181216144641p:plainf:id:ytyaru:20181216144649p:plainf:id:ytyaru:20181216144656p:plainf:id:ytyaru:20181216144702p:plainf:id:ytyaru:20181216144708p:plainf:id:ytyaru:20181216144715p:plain

 毎回1パッケージに1回求めてくる。しかもライセンス表示するとブラウザが起動し、メモリ不足でフリーズする。このインストールに毎回数分かかる。もうやめてくれ。

3. ビルド

 実行ボタンを押下すると以下のビルドエラーが出た。

f:id:ytyaru:20181216144546p:plain

/tmp/work/Projects/OtherConsole0/OtherConsole0/AppDbContext.cs(13,13): Error CS0012: The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. (CS0012) (OtherConsole0)

所感

  • 参照エラーっぽいが、どうすればいいの?
  • .NET Framework では Eto.Form と併用できないのでは?

 一向に成功せずエラーばかり。もう疲れたよ……。