2019/02/24(日)VS2019でBlazor

なぜか苦労しました。結局なぜ動くようになったのかも不明。
先にVS2019を入れてしまったからでしょうか。
正しくはこちらの順序にあわせた方が安心です。

色んなエラー画面見ました。

.NET Core SDK 3.0を入れたのに有効になってない?

blazor010.png


ここにあるのとほぼ同じ現象。
バグじゃない、仕様です。下記にチェックを入れろ、というそっけない返答。
blazor015.png

確認したところグレーアウトしていて有効になっているのかどうか不明。
インストールした.NET Core SDKが64ビット用だったのが間違ってたのか?(VS2019を含めVS自体は全てC:\Program Files (x86)の下にインストールされているので)と思い一旦64ビット版をアンインストールし32ビット版を入れる。

SDKが複数見つかりました

エラー rzc generate exited with code -2147450730.
ちゃんとアンインストールしたはずなんですが、調べるとSDKを両方インストールした時に出るエラーと似てる。
いずれにせよ64ビットマシンでは64ビット版を入れるのが正解らしい。
しょうがないので32ビット版をアンインストールし、再び64ビット版を入れる。

Blazorプロジェクト作成前に切り分けのため通常のWebアプリを作成してみる

最初にちょっと依存のエラーは出たものの気長に待てばちゃんと解決され、立ち上がった。
vs2019pv040.png

Blazorを試したらなぜか動いた

Microsoft.NET.Sdk.WebをMicrosoft.NET.Sdk.Razorに変えたりnetstandard2.0をnetstandard3.0に変えたり試行錯誤しましたが、結局プロジェクトファイルは特にいじることなく下記の初期状態で動いています。
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RunCommand>dotnet</RunCommand>
    <RunArguments>blazor serve</RunArguments>
    <LangVersion>7.3</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Blazor" Version="0.8.0-preview-19104-04" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="0.8.0-preview-19104-04" PrivateAssets="all" />

    <DotNetCliToolReference Include="Microsoft.AspNetCore.Blazor.Cli" Version="0.8.0-preview-19104-04" />
  </ItemGroup>

</Project>
blazor020.png

2019/02/23(土)Visual Studio 2019 Preview

VS2017の拡張機能でマーケットプレイスからBlazorのテンプレートを入れようとしても見つからず。
Visual Studio 2019 Previewの動作環境を確認したらなんとWindows7が対象になっていたので、入れてみました。

違和感のある起動画面
vs2019pv起動中画面


インストールしたのはBlazor用に最低限のASP、Core関連のみ。
vs2019pv010.png


Edgeを使ったUIの単体テストが出来るんでしょうか…。
vs2019pv020.png


ちゃんと動くかどうかとりあえずRazor Pagesのプロジェクトを立ち上げてみました。
vs2019pv030.png

プロジェクトの中に入ってしまえばそれほど違和感ありません。
実行後の画面もVS2017との目に見えるような違いはありませんでした。
違いが無いのも当然、.NET Core2のテンプレート使ってました。

Core3のテンプレートで作成した画面。
vs2019pv040.png

2018/12/16(日)GitHub Extension for Visual Studioを入れました…

githubで作成したリtestポジトリをVisual Studioでローカルにクローンするのは簡単にできましたがローカルにあるソリューションをプッシュする方法が分からず苦戦。
検索するとGitHub Extension for Visual Studioを使う方法が上がって来ますが、Visual StudioだけでGit使えた記憶があるので、Extension入れずに色々試すも見つけられず。

ソース管理プラグインがGitになっていることを確認。
github010.png


リポジトリを作成した後に表示される ...or push an exsisting repository from the command lineを試す。
github020.png

1行目はVisual Studio側で設定済み(自信ないですが、下記と同じつもり)なので2行目をcmdで実行するも証明書系?のエラー。
github025.png


Visual Studioのソリューションからコミット。
github030.png


コメントを入れてローカルに反映。
github040.png


同期を実行してもプッシュがグレーアウトのままでGitHub繋がらずオフラインのまま。
github050.png


しばらく格闘したものの、年末の忙しい時期で根気が続かず。
ここは潔くGitHub Extension for Visual Studioを入れることに。
Visual Studioの「ツール」→「拡張機能と更新プログラム」でgithubで検索すると一番上に出てきました。
github060.png


見慣れたマークが現れました。必要なくなったら消せるんでしょうか…。
github070.png


Connect…をクリックすると待望のログイン画面が。
github080.png


ログインするとアイコンが増えました。
github090.png


プッシュがアクティブになっています。
github100.png


無事プッシュ終了。
github110.png


GitHubに行って確認。
READMEを追加しろ、というメッセージが出たのでソリューションに追加するつもりで画面だけキャプったらそこに「Add a README」ボタンがあることに気づく。
IEで編集しようと思ったら保存できず。今までIEでGitHubを見てもデザインの崩れ等感じませんでしたが初めて実感。クロームで編集。
github120.png


Visual Studioからプルしてみましたが、ソリューションからは見えない。
フォルダを開いて確認するとちゃんと保存されていました。
github130.png

ASP.NET

2018/07/07 Visutal Studio::VS2017
個人的にはASP.NET MVC一択かなと思っていたのですが、Web系テンプレート選択で悩むことが増えてきたので…。

VS2017のWeb関連テンプレート

ASP.NET or ASP.NET Core

入口で大きく2つに分かれていますがターゲットフレームワークの違いで選択してしまいそうですが、ここでの選択はターゲットフレームワークの違いではなくASP.NETのバージョンによる違いです。
asp20180707001.png

ASP.NET Coreは元はASP.NET5と呼ばれてました。
asp20180707005.png

なんとなくの推測ですが、.NET Coreに対応するにあたり他の言語から移行しやすいようにフォルダの構成等を世間の流行りに合わせたら、ASP.NET4からの自動アップグレードができなくなった。しょうがないのでリセットして1から始めた感じ。
ASP.NETをASP.NET Coreに移植するべき?
ASP.NETは簡単には無くならない。WebFormやWCFやWFはASP.NETのまま残る(.NET Core対応予定なし)。
MVCも完全な互換があるわけではない。依存ライブラリによっては.NET Core未対応のものもある。
→移植の規模が大きい場合は手間をかけてまで書き換える必要は無い。
.NET Coreが.NET Frameworkより優れている点
  • クロスプラットフォーム(macOS、Linux、Windowsで実行できる)
  • パフォーマンスが向上した
  • side-by-sideで.NET Frameworkより細かいバージョン違いまで管理が可能(マイナーバージョン違いを同時に動かすことができる)
  • 新しいAPIが使える
  • オープンソースである
新しいプロジェクトを作成する場合は.NET Coreの採用を真剣に検討すべき、だそうです。
正直今まであまり必要と思ってませんでしたが、機械学習やらRazor Pagesを試そうとすると.NET Coreを入れろ、から始まっているので仕方なくと言う感じです。

ASP.NET Core Web アプリケーション

旧称:ASP.NET5
対象フレームワークは.NET Coreあるいは.NET Framework
作成時に選択(後から切り替えは無理っぽい→プロジェクトファイル直接編集すれば可)どちらのフレームワークを選ぶかの判断基準はこちら
asp20180707004.png

テンプレート名プロジェクトタイプ備考
ASP.NET Core詳細
APIRESTful HTTPサービス詳細
WebアプリケーションASP.NET Core Razorページ詳細
Webアプリケーション(モデル ビュー コントローラ)ASP.NET Core MVC詳細
AngularSPA(with Angular)詳細
React.jsSPA(with React.js)同上
React.jsとReduxSPA(with React.js,Redux)同上

ASP.NET Web アプリケーション(.NET Framework)

通称:ASP.NET4
対象フレームワークは.NET Frameworkのみ
フレームワークの切替機能はなく、アイコンにさりげなく(?)ASP.NET4の4が付いています。
asp20180707003.png

テンプレート名プロジェクトタイプ備考
ASP.NET4詳細
WebフォームWebForm詳細
MVCASP.NET MVC5詳細
Web APIRESTful HTTPサービス(ヘルプページ付)詳細
Single Page ApplicationSPA(with Knockout.js)詳細
Azure APIアプリRESTful HTTPサービス(with Swagger)詳細

2018/07/04(水)ASP.NET Core MVC は非推奨

VS2017の起動直後の画面に表示されているリンク「最新のテクノロジーを活用して、美しく、低コストで信頼できるWebサイトを配置する」をクリックしてみてびっくり。
「Razor ページ」のページへ飛ばされ、あれMVCはと思ってMVCのページをクリックしたら下記のような文言が。
pg20180704001.png

意訳すると「新しく便利なRazorページを作ったのでそっちを使ってね、どうしてもMVCを使うというのならその理由を報告してね」

あえてMVCを選択する理由を覗いて見るとWebFormを思い出す、後退だろうという意見やコロコロ変えすぎ付いて行けないわという意見が。

気持ちは分かりますが、ドキュメント読んでいる感じではMVCの一部だし、ページ単位でコードがまとまるのは管理が楽になりそうで悪くは無いと思います。
最初からこの形にしておけばWebFormからの移行も楽だったんじゃないかと思いますが。
今までは自分でViewModelを作成していましたが、それがPageModelに変わると書き方が統一されそうですし。

Coreの動くサーバーがまだ無いので実際に使うのは随分先になりそうですが…。
プロジェクトを作成する際に.NET Framework選択すればよさげです。
rp20180707002.png


後から切り替えは無理っぽい。
rp20180707003.png

OK キャンセル 確認 その他