ぷるぷるの雑記

低レイヤーがんばるぞいなブログ. 記事のご利用は自己責任で.

LiteDB.Studioのビルド方法

実行環境

項目 説明
OS Windows11
Visual Studio 2019 or 2022
.NET Framework 4.7.2

ソースコードのダウンロード

LiteDB.StudioのソースコードとLiteDBのソースコードGithubからダウンロードします. LiteDB.StudioのビルドにLiteDBが必要になります.

github.com

github.com

LiteDB.Studioのフォルダを見るとLiteDBという空フォルダがありますが、ここにLiteDBを配置します. LiteDB/LiteDBさえあれば十分ですが、全てのフォルダをコピーしても問題ありません.

LiteDBプロジェクトを所定の位置に配置

ソリューションのビルド-その1-

LiteDB.Studio.slnをVisual Studio2019以降で開きます. この.slnファイルを開くと以下のような記述があります. このことからもLiteDB.StudioのビルドにはLiteDBさえあれば十分であることが分かります.

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiteDB.Studio", "LiteDB.Studio\LiteDB.Studio.csproj", "{0002E0FF-C91F-4B8B-B29B-2A477E184408}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LiteDB", "LiteDB\LiteDB\LiteDB.csproj", "{70E32FF1-6E08-4BF0-9C99-33E1F3711DD7}"
EndProject

Visual Studioからビルドすると、以下のようなエラーが出ます.

ファイル Forms\MainForm.resx を処理できませんでした。インターネットまたは制限付きゾーン内にあるか、ファイルに Web のマークがあるためです。これらのファイルを処理するには、Web のマークを削除してください。 LiteDB.Studio           

これはインターネットから落としてきたソースファイルをビルドしようとすると出るセキュリティ上のエラーだそうです. エラーが出ているファイルのプロパティからセキュリティを許可するのチェックボックスにチェックを入れVisual Studioを開きなおすとビルドが出来るようになります.

qiita.com

改めてビルドすると以下のようなエラーが出ます.

型または名前空間の名前 'Newtonsoft' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)

どうやらNewtonsoftというライブラリが必要なようです. LiteDB自体は依存する外部ライブラリはありませんが、LiteDB.Studioは外部ライブラリが必要なようです.

Newtonsoftのインストール

NugetからNewtonsoft.Jsonをインストールするか、ソースコードに付属するNewtonsoft.Jsonの参照設定をします. 今回は後者の方法をとります. ソリューションエクスプローラーのLiteDB.Studioプロジェクトの参照を右クリック->参照の追加をクリックしてNewtonsoft.Json.dllにチェックを入れて参照を追加します.

Newtonsoft.Json.dllへの参照にチェックを入れる

ソリューションのビルド-その2-

再びビルドをするとビルドに成功しました.

LiteDB.Studioビルド成功

Visual Studio 2019以前でもビルドはできるか

Visual Studio 2017でソリューションファイルを開くと次のようなエラーメッセージが表示されます.

The current .NET SDK does not support targetting .NET Standard 2.0. Either target .NET Standard 1.6 or lower, or use a version of the .NET SDK that supports .NET Standard 2.0.

.NET Standardというのは仕様の種類であって具体的な実装はなんでもよいみたいです.

qiita.com

LiteDB.Studioは.NET Standard 2.0 の実装を必要としており、Microsoftによると.NET Framework 4.6.1以上はその要件を満たすようですが、Visual Studio 2019よりも前のバージョン、例えばVisual Studio 2017では結局のところ対応していないみたいです. Visual Studio2015でもNuGetを新しくすれば.NET Standard 2.0を使えなくはないようですが、そこまでするならVisual Studio 2019を使うか、そもそもLiteDB.Studioをあきらめた方がよいかもです.

learn.microsoft.com

stackoverflow.com