はじめに
以前Blazor + Electron.NETを試してみたという記事でBlazorで作成したWebアプリを簡単にデスクトップアプリとして扱えるようになることを紹介しました。その記事の最後にElectronのファイルダイアログを操作することができるということと、参考リンクの紹介をしました。参考リンクには書かれていない注意点があったため、今回はそのことについてまとめます。実際のファイル操作の実装は参考リンクが分かりやすいので、そちらを参照ください。
Electronのファイルダイアログ操作について
Electronでローカルファイルの選択ダイアログを実装するときには、dialogモジュールのshowOpenDialog関数を用います。詳しくはこちら。
Electronのdialogモジュールなどのリモートモジュールを使う際にWebPrefarenceのenableRemoteModuleというプロパティをtrueに設定しないと利用できないそうです。詳しくはこちら。
Elecrron.NETを使用する場合のenableRemoteModuleプロパティの設定
Electron.NETを使用する際、この設定ができるAPIが公開されているのは最新のElectronNET.APIのみでした(2021/2/26に確認した時点でV11.5.1)。startup.csファイルでElectronのウィンドウを開く処理を行う際に、WebPreferencesの設定を行うことができます。
var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions
{
WebPreferences = new WebPreferences() { EnableRemoteModule = true },
});
ElectronNET.APIの最新バージョンと対応するBlazorプロジェクトのフレームワークのバージョンについて
ElectronNET.APIの最新バージョンは.NET5に対応しています。Blazorのサーバーアプリのプロジェクトを作成した段階では、プロジェクトの対象のフレームワークが.NETCore 3.1で作成されるのではないかと思います。その状態でElectron.NETの最新バージョンをインストールしようとすると、.NETCore3.1と互換性が無いという旨のエラーが出てインストールできないためご注意ください。
また、Blazorのサーバーアプリではなく、Blazor WASMを使用することができないかも試しました。ElectronNET.APIをインストールしようとすると、上記と同様にBlazor WASMの対象フレームワークである.NETStandard2.1と互換性が無いという旨のエラーがでてインストールできないです。(ElectronNET.APIの以前のバージョンであっても.NETCoreにしか対応していないため、現状Blazor WASMとの組み合わせができないみたいです。)
したがって、現状Blazor + Electron.NETを使用してファイル操作も行うアプリの開発したい場合は
Blazorのサーバーアプリで対象フレームワークを.NET5にして、ElectronNET.APIの最新バージョンを使用するのがよさそうです。
さいごに
少々細かい話ではありましたが、私が詰まった点でしたのでまとめした。
最後までお読みいただきありがとうございました。