13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【C#】macOSでBlazorの実行環境を作成してみた

Last updated at Posted at 2019-06-30

BlazorとはJavaScriptの代わりに C# を使って、フロントエンド開発を行いSPAを作れるフレームワークです。
WebAssembly (wasm) によって、.NETのコードをブラウザで実行しています。

前からBlazorを勉強したいと思い、実行環境だけ作成してみたので投稿させていただきました。
C#初心者です。よろしくお願いします。


以下のGet startedの通りに行えば、特に問題なく実行環境を作成できました。

自分が試した環境

  • macOS Mojave
  • dotnet 3.0.100-preview6-012264
  • Google Chrome : 75.0.3770.100 (Official Build) (64-bit)

1. .NET Core 3.0 をインストールする

macOSのインストーラをダウンロード

Screen Shot 2019-06-30 at 3.png

画面の指示に従って操作を行えばインストールできました。

Screen Shot 2019-06-30 at 3.22.36.png

.NET Core 3.0がインストールされたことを確認。

Screen Shot 2019-06-30 at 3.24.33.png

2. コマンドを実行してBlazorテンプレートをインストール

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview6.19307.2

3. Blazorのプロジェクトを作成

VSCodeを使用してプロジェクト作成した手順を紹介させていただきます

3-1. C# for Visual Studio Code extension のインストール

VSCodeでC#開発を行うときは必須なので入れておきます。

プロジェクト作成

bash
dotnet new blazor -o WebApplication1
code -r WebApplication1 #WebApplication1のフォルダをルートのフォルダにしてVSCodeを開き直す
dotnet run

JUiS8Zt49a.gif

http://localhost:5000/ を開くとBlazorのプロジェクトを確認することができます。

Screen Shot 2019-06-30 at 3.47.59.png

3-2. カウンターの動きを確認

Pages/Counter.razor
@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="@IncrementCount">Click me</button>

@code {
    int currentCount = 0;

    void IncrementCount()
    {
        currentCount++;
    }
}

@page/counterと指定されているのでhttp://localhost:5000/counter とアクセスすると、Pages/Counter.razorの内容が実行されます。

@onclickでクリックイベントを指定し、@IncrementCountが実行され、@currentCountの更新を確認できました。

eQX9Wd6FU8.gif

3-3. コードを変更してみる

Pages/Counter.razor[Parameter]属性を指定してIncrementAmountのプロパティを追加し、currentCountIncrementAmountを足すように変更

Pages/Counter.razor
  @page "/counter"

  <h1>Counter</h1>

  <p>Current count: @currentCount</p>

  <button class="btn btn-primary" @onclick="@IncrementCount">Click me</button>

  @code {
      int currentCount = 0;

+     [Parameter]
+     private int IncrementAmount { get; set; } = 1;

      void IncrementCount()
      {
-         currentCount++;
+         currentCount += IncrementAmount;
      }
  }

ホーム画面に<Counter />エレメントを追加します。
先ほどCounterコンポーネントにIncrementAmountプロパティを追加したので、<Counter IncrementAmount="10" />とします。

Pages/Index.razor
  @page "/"

  <h1>Hello, world!</h1>

  Welcome to your new app.

  <SurveyPrompt Title="How is Blazor working for you?" />

+ <Counter IncrementAmount="10" />

コードを変更したので、Ctrl+Cで一度サーバーをシャットダウンし、dotnet runとして起動し直すと変更が反映されます。

zlOgB3KuZi.gif

4. 監視モードで実行する

dotnet watch runとすることで、ファイルが変更されると自動で再コンパイルしてサーバー起動してくれます。
一回一回Ctrl+Cとする手間がはぶけます。

ただ私の環境ですと自動とはいえ、ファイルを更新 -> サーバリロード で5〜6秒ぐらいかかってしまいました。
もう少しやりやすい方法などありましたら、教えていただきたいです。m(_ _)m

5. chromeでステップ実行

試してみるとおそらくうまくいったので自分が行ったことを書かせていただきます。

参考

5-1 デバッグモードで起動する

dotnet run --configuration Debug

5-2 chromeをコマンドから起動する

1 chromeを開いているのであれば閉じる
2 以下のコマンドでchromeを開く

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 http://localhost:5000

3 開いたchromeがアクティブウィンドウの状態でshift+option+D
4 dev toolが開くのでブレークポイントを設定する
5 ステップ実行してみる

こちらのコード↓をステップ実行してみます

Pages/Counter.razor
@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="@IncrementCount">Click me</button>

@code {
    int currentCount = 0;

    void IncrementCount()
    {
        currentCount++;
        currentCount++;
        currentCount++;
        currentCount++;
        currentCount++;
    }
}

vCY6DJ7t2p.gif

chromeからステップ実行することができました、スンバラシ…

自分がはまった部分

5-3. dev toolをcommand+Rでリロードすると、なぜかファイルが見れなくなってしまう

command+Rではなく、左上のリロードをマウスでクリックするとファイルが見れるようになりました。↓
無事ソースが確認できました。

muy4CAoJux.gif


最後まで読んでいただいてありがとうございました。

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?