プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2017/11/17

Visual Studio で .NET Core + Electron.NET を使う

event_note2017/11/17 5:21

.NET Core ではデスクトップアプリケーションは作成できないと思っていましたが、Electron の .NET 版があるのを知りました。
そして、Windows で .NET を使うならやはり Visual Studio を使いたいので、試してみました。

尚、私は Electron 自体は使ったことありません。
Node.js も昔に少し使ったことがあるという程度です。

環境

  • Visual Studio 2017
  • .NET Core 2.0 (ASP.NET Core 2.0)
  • Node.js v8.9.1
  • Electron.NET v0.0.7

ちなみにデモアプリケーションもあります。

準備

絶対に必要なのは以下の2つなので、あらかじめインストールしておきます。

また、今回は Visual Studio を使うので、Visual Studio もインストールします。

  • Visual Studio 2017

プロジェクトの作成

Visual Studio を起動します。

[ファイル] > [新規作成] > [プロジェクト] を選択します。

[ASP.NET Core Web アプリケーション] を選択します。

[Web アプリケーション (モデル ビュー コントローラー)] を選択します。

Electron.NET を使用するための設定

公式で説明されている通りに設定を行います。

ElectronNET.API NuGet パッケージのインストール

[ツール] > [NuGet パッケージマネージャー] > [パッケージ マネージャー コンソール] を選択します。

以下のコマンドを入力してパッケージをインストールします。

PM> Install-Package ElectronNET.API

Program.cs の変更

Program.cs を開き、BuildWebHost メソッドに UseElectron を追加します。

using ElectronNET.API;

// 中略

public static IWebHost BuildWebHost(string[] args)
{
    return WebHost.CreateDefaultBuilder(args)
        .UseElectron(args)
        .UseStartup<Startup>()
        .Build();
}

Startup.cs の変更

Startup.cs を開き、Configure メソッドの最後に Electron.WindowManager.CreateWindowAsync を追加します。

using ElectronNET.API;

// 中略

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseStaticFiles();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });

    // Open the Electron-Window here
    Task.Run(async () => await Electron.WindowManager.CreateWindowAsync());
}

.csproj の変更

Visual Studio 上でプロジェクト名を右クリックし、[(プロジェクト名).csproj を編集する] を選択します。

ItemGroup の中に、<DotNetCliToolReference Include="ElectronNET.CLI" Version="*" /> を追加します。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
    <DotNetCliToolReference Include="ElectronNET.CLI" Version="*" />
  </ItemGroup>

</Project>

NuGet パッケージの復元

ここまで完了したら、一度 Visual Studio を終了し、dotnet-electronize を使うために NuGet パッケージの復元を行います。

コマンドプロンプト(または PowerShell)を開き、プロジェクトの場所に移動してから以下のコマンドを実行します。

> dotnet restore

Electron.NET プロジェクトの初期化

続いて以下のコマンドを入力してプロジェクトの初期化を行います。

> dotnet electronize init

プロジェクト配下に electronnet.manifest.json というファイルが作成されます。
.csproj ファイルの変更されています。

次に以下のコマンドを打って、ビルドが正常にできることを確認します。

> dotnet electronize build

Electron.NET プロジェクトの実行

以上で準備は完了です。

Visual Studio を起動してソリューションを開きます。

すると、ターゲットに [Electron.NET App] というのが選択されていると思います。

この状態で F5 を押すと、Electron を使ったデスクトップアプリケーションが起動します。

が、ちょっと重いですね・・・。
(私の環境が貧弱なだけ?)

Electron.NET はまだ登場したばかりで今後どうなるかわかりませんが、とりあえず動向はチェックしておこうと思います。

参考 URL