Visual Studio CodeでC#書くよ

や、書きたくはないのだが。Viaual Studioとかいう世界最強のIDEを諸事情で使えず、仕方なくVisual Studio Codeで書きたい人向けに。

目次

  1. Visual Studio Codeのインストール
  2. .net core SDKのインストール
  3. VScode拡張のインストール
  4. プロジェクトを作成する
  5. デバッグ(ブレークポイント)
  6. おまけ(プロキシ認証)

Visual Studio Codeのインストール

https://azure.microsoft.com/ja-jp/products/visual-studio-code/
ここから適当な環境にあったものをDLしてインストール。User/Systemだが、自宅で一人で使うPCならSystem、会社など(特にAD環境のVMとか)ではUserで。

.net core SDKのインストール

https://dotnet.microsoft.com/download
ここの.NET Core 3.xのSDKをダウンロードしてインストール。ところで、.netって英小文字って覚えていたのだがいつの間にか英大文字になったの?

VScodeのTerminalでversion/infoを確認。や、cmd.exeでもいいけど。

PS E:\> dotnet --version
3.1.401
PS E:\> dotnet --info   
.NET Core SDK (global.json を反映):
 Version:   3.1.401     
 Commit:    5b6f5e5005  

ランタイム環境:
 OS Name:     Windows   
 OS Version:  10.0.18363
 OS Platform: Windows   
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.401\

Host (useful for support):
  Version: 3.1.7
  Commit:  fcfdef8d6b

.NET Core SDKs installed:
  1.0.0-preview2-003131 [C:\Program Files\dotnet\sdk]
  1.0.0-preview2-003156 [C:\Program Files\dotnet\sdk]
  2.1.602 [C:\Program Files\dotnet\sdk]
  2.1.701 [C:\Program Files\dotnet\sdk]
  2.1.801 [C:\Program Files\dotnet\sdk]
  2.2.202 [C:\Program Files\dotnet\sdk]
  2.2.301 [C:\Program Files\dotnet\sdk]
  2.2.401 [C:\Program Files\dotnet\sdk]
  3.1.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 1.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

VScode拡張のインストール

こんな感じ。必須なのはC#のみ(デバッグもこれ)なので、あとはお好みで。

プロジェクトを作成する

https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet
.net Core CLIの使い方はここに全て載ってます。Visual Studioさんという世界最強のIDE様はなーんでもボタン一つで自動でやってくれましたが、諸君らはちんたらコマンド叩きまくる必要があるので覚えておきましょう。や、覚えなくていい、上のページをブックマークしよう。

適当なディレクトリを作り、その中にプロジェクトを作成します。余談ですが、私はVScode環境ではソリューション作りません。そんな規模(テストプロジェクト必須とか)になったら世界最強のIDEであるVisual Studioを買ってもらいましょう。

PS E:\VScodeProjects> dotnet new winforms --name TestWindowsForms
Getting ready...
The template "Windows Forms (WinForms) Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on TestWindowsForms\TestWindowsForms.csproj...
  復元対象のプロジェクトを決定しています...
  E:\VScodeProjects\TestWindowsForms\TestWindowsForms.csproj を復元しました (130 ms)。

Restore succeeded.

ここではWindows.Formsテンプレートを使用してプロジェクトを作成しました。どんなテンプレートがあるかは下記を読みましょう。
https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet-new

上で作ったプロジェクトのディレクトリを、エクスプローラ上から右クリック->"Codeで開く"などをして開きます。すると、

Required assets to build and debug are missing from 'TestWindowsForms'. Add them?

みたいな通知が来ますのでYesを押すと、必要なファイルを.vscodeディレクトリに生成してくれます。こんな状態で雛形が出来上がっています。

デバッグ(ブレークポイント)

適当にブレークポイントを打ってF5で実行します。Visual Studio同様、変数やウォッチ式で見ることが出来ます。ただ、やはりと言っては失礼だがモッサリモサモサしてる。

おまけ(プロキシ認証)

最近、VScodeのバージョンが上がるたびにプロキシ認証Windowがバグってるんですよね……。あ、rubyのgemとかとは違って、Nugetパッケージマネージャーで何らかのパッケージを使っている時、terminalでset_http_proxyとかしてもビルド時にコケます。VScode自体のプロキシ認証設定、あとNuget自体にプロキシ認証設定をする必要があります。VScodeは設定画面で登録できるので良いのですが、NugetはまずNuget.exeを拾ってきて(*1)下記のように叩くと無事にビルドできるはずです。

NuGet.exe config -set http_proxy=http://proxy-auth-server:3021
NuGet.exe config -set http_proxy.user=USER_NAME
NuGet.exe config -set http_proxy.password=PASSWORD

C:\Users\<USER_NAME>\AppData\Roaming\NuGet\NuGet.Config に記述が追加(パスワードはシャドウ化)されているはずです。

*1) https://docs.microsoft.com/ja-jp/nuget/install-nuget-client-tools

なんかpage speed insightキツくなってない?

https://developers.google.com/speed/pagespeed/insights/?hl=JA&url=https%3A%2F%2Fwww.dobusarai.net%2Fblog

WebP必須ってこと?pictureとかで振り分けるのダルすぎ!というか元凶のsafariとかいうウンコブラウザをどうにかしてから言え!

と思ったらversion14(今が何なのか知らん)でついに対応するそうな。そうしたら全部WebPに変換してスコアチェックしようかな。なんかIE11も対応するっぽいよ。

追記
IE11も対応するってどこかで読んだ気がするけど、sourceを見つけられなかった。酔ってるからかな。もういいでしょ、捨てよう!IE!

完全にこのブログというかサーバの存在を忘れていた

Techエントリならqiitaとかに書けばいいんじゃないの?的な。ネタはあるのだけれど、もう色々と精査するのも面倒で。googleのアクセス解析も半年以上見ていないけれど、個人ブログというか個人サイトの需要って相当クオリティが高くないと無いのじゃないかしらっていう。

AWS + C#みたいな、そこらへんの技術はqiitaに書きますね。多分。アカウントは取得済みなんです。覚えていたら。マークダウンに馴染みがないので、そこもダルいのですけれど。lambda(C#)とか、PHP(Phalcon 3.4 -> 4.x)とか、FeliCa読んで云々とか。超絶ニッチな需要がありそうなネタがあるのだけど、なーんかめんどくさいのよなー。書くのが。覚えていないけれど、この糞ブログに載せているコードは確実に動くはず。エラー吐かずに動いてからエントリ書いてたからね。確か。

「これが最先端だぜ!」みたいのはないけど、実運用でもっと楽したいなーみたいのをあれこれ試行錯誤していたので、そういうのを書ければ。酒飲んでない日に。

[.net core 3.1] 素数を数えて落ち着くんだ

落ち着くも何も、やることないので素数を数えてたよ。qiitaとかそういうところで検索したら最適解はゴロゴロ転がっているのだろうけど、一切見ずにwikipediaの下記ルールのみで書いた。色々と高速化についてはやりようがあるだろうしなー。例えば2以外の偶数は素数ではないとか、エラトステネスのふるいとか。俺はパッパラパーなので数学はわかりません!

ウィキペディア(Wikipedia): 素数
https://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0

素数(そすう、英: prime number)とは、1 より大きい自然数で、正の約数が 1 と自分自身のみであるもののことである。

とりあえず1000000までの素数を列挙する。

https://gist.github.com/dobusarai2016/227329547de90ba46559e0b2d943c148
result 00:02:25.6290352

2分25秒。おっそ!まあそりゃそうだが。ちなみにCPUはざっと最大でも20%使用くらい。

https://gist.github.com/dobusarai2016/f2dd95dce63d65d8430c9c831fec0537
result 00:00:55.3746587

55秒。死ぬほど雑で乱暴なコードだが非同期で並列処理を行ってみた。CPUは最大で90%使用していた。コードがアレだって?まあな。暇ならList<Task<string>>を作って回すとかでいいんじゃないの。アマプラでも見よう。