なんでや!
前回
- http://ytyaru.hatenablog.com/entry/2020/02/10/000000
- http://ytyaru.hatenablog.com/entry/2020/02/11/000000
libe_sqlite3.so
ファイルを作成して実行ファイルのディレクトリに配置することで「System.DllNotFoundException: e_sqlite3」エラーは解決した。が、Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: *'.
のエラーが解決できない。
今回
一旦Eto.Formをやめて単純なコンソールプロジェクトで試そうとしたら、デフォルトのプロジェクトすらビルドできない有様。
対象環境
- 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参照方法
手順
- MonoDevelopを起動する
- メニュー→
ファイル
→新しいソリューション
.NET Core
→アプリ
→コンソールアプリケーション
を選択する
- プロジェクトを右クリックして
オプション
をクリックする ビルド
→全般
→ターゲットフレームワーク
が.NET Core 1.1(インストールされていません)
で固定になって変えられないことを確認する
なんでや! .NET Core 2.2 入れたのにダメなの? まだ何か必要なの?
Error: NETSDK1061
実行ボタンを押すと以下の警告とエラー。
警告
/tmp/work/Projects/EFCore0/EFCore0/EFCore0.csproj: Warning NU1604: Project dependency Microsoft.NETCore.App does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results. (NU1604) (EFCore0)
エラー
/tmp/work/Projects/EFCore0/EFCore0/EFCore0.csproj: Error: NETSDK1061: The project was restored using Microsoft.NETCore.App version 1.0.0, but with current settings, version 1.1.2 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish. Typically this issue can occur if the RuntimeIdentifier property is set during build or publish but not during restore. For more information, see https://aka.ms/dotnet-runtime-patch-selection. (EFCore0)
.csproj
ファイルでバージョンを変更しても、同様のエラー。
<!-- <TargetFramework>netcoreapp1.1</TargetFramework>--> <TargetFramework>netcoreapp2.0</TargetFramework>
/tmp/work/Projects/EFCore0/EFCore0/EFCore0.csproj: Error: NETSDK1061: The project was restored using Microsoft.NETCore.App version 1.0.0, but with current settings, version 2.0.0 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish. Typically this issue can occur if the RuntimeIdentifier property is set during build or publish but not during restore. For more information, see https://aka.ms/dotnet-runtime-patch-selection. (EFCore0)
ググっても解決せず。どうすりゃいいの?
.csproj
に以下のいずれかを追加すればいいとある。
<PropertyGroup> <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> </PropertyGroup>
<PropertyGroup> <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup>
以下が元の.csproj
。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> </Project>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
を追加したが同様のエラー。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> </PropertyGroup> </Project>
Error: NETSDK1047
<RuntimeFrameworkVersion>
などを追加したら別のエラーになった。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <RuntimeIdentifier>arm32</RuntimeIdentifier> </PropertyGroup> </Project>
<RuntimeIdentifier>
の値をlinux-arm32
にしても同様。
/home/pi/root/lib/.NETCore/2.2.101/sdk/2.2.101/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(5,5): Error NETSDK1047: Assets file '/tmp/work/Projects/HelloCoreConsole/HelloCoreConsole/obj/project.assets.json' doesn't have a target for '.NETCoreApp,Version=v1.1/arm32'. Ensure that restore has run and that you have included 'netcoreapp1.1' in the TargetFrameworks for your project. You may also need to include 'arm32' in your project's RuntimeIdentifiers. (NETSDK1047) (HelloCoreConsole)
<TargetFramework>netcoreapp2.2</TargetFramework>
にしてもダメ。
<TargetFrameworks>netstandard2.0</TargetFrameworks>
に変更したら、.exe
でなく.dll
を出力してしまう。
Invalid framework identifer ''.
<TargetFrameworks>
の値一覧。もし<TargetFrameworks>
をなくすと以下のように怒られる。
Invalid framework identifer ''.
所感
次々と可能性を潰されていく。