rksoftware

Visual Studio とか C# とかが好きです

C# Dev Kit がリリースされたので見ていきます 全部まとめ

C# Dev Kit がリリースされたので見ていこうと思います。 C# Dev Kit はこちら。

C# Dev Kit を確認した記事群がこちら。

この記事はこの記事群を一つにまとめたものです。

【 その1 】 誰が使えるか?

■ まずは最初に

新しいものが出たらまず真っ先に確認することは何でしょう? そう! 誰が使えるかです。

どんなものも、最初の関心は自分がそれを使えるかどうか、それが大事です。
というわけで見てみましょう。

■ Learn

Learn に情報が掲載されているので、そこで確認してみましょう。

Visual Studio の月間クラウドライセンスでないライセンスがあれが使える気がします。気がするというのは、ライセンスはあまり明瞭に書かれないし、第三者が読み方に責任は一切持てないからです。仕事で使う場合は、MS への問い合わせなどして対応してください。

さて、その月間クラウドとは何でしょう? 多分これかな?
ここの『毎月』、がそれかな?

多くの場合、仕事であれば右の『標準』でしょうから特別に気にしなくても使えると考えて良いのかなと思います。

■ Community

じゃあ、個人はどうなのか、そこが一番気になっていますね? 分かっています。そこは安心してください。 ここの情報によると、Visual Studio の Community と同じ扱いのようです。つまり、個人なら Visual Studio Community と同じように使えると考えて良さそうです。

!! 注意 !!

Visual Studio Community と同じという事は、Visual Studio Community と同じ注意点があります。

For commercial purposes, teams of up to 5 can also use the C# Dev Kit at no cost
商用目的の場合、最大 5 人のチームが C# 開発キットを無料で使用することもできます。

これ、は非常に注意が必要です。他に使っている人がいるか確認せず、自分の知っている範囲で 5 人で判断する人が出てきます。確実に。間違いないです。全力で注意してください。

■ Visual Studio が使えない場合

Visual Studio が使える人はだいたい C# Dev kit も使えると考えて良さそうです。
逆に Visual Studioが使えない人は使えないと考えるとなかなかこれは難しいかもしれません。

Visual Studio が使えない人はたいてい代わりに Visual Studio Code を使っているんじゃないかと思います。C# Dev Kit は Visual Studio Code の拡張機能なので、使えるんじゃないかと期待する人は多いでしょう。私も実際期待していました。しかし実際には使えません。これが厄介。使えないと説明をすることは JTC では非常に困難な事だと思います。
偉い人の頭に『無償で使えるかも』と一度でも浮かんだものは、無償で使えない、と受け入れてもらうことは JTC においては非常に困難です。分かります。

皆さん、戦いましょう。応援しています。

■ 結論

たいていの場合、Visual Studio が使えるなら C# Dev Kit は使えると考えて良さそうです。

【 その2 】 拡張機能のアンインストール

■ 拡張機能のアンストール

C# Dev Kit をインストールしていきたいわけですが、その前にやることがあります。それは、C# 拡張機能のアンインストールです!

なぜアンインストールするのか? そう思っていますね。分かります。実はこれを読んでいる皆さんはアンインストールしなくてよいと思います。今回アンインストールするのは C# 拡張機能の入っていない Visual Studio Code に C# Dev Kit をインストールする と、どういう流れになるのか、を確認するためです。

■ Visual Studio Code の拡張機能タブ

Visual Studio Code の拡張機能タブを開いて、C# 拡張機能の uninstall を選択します。

C# 拡張機能がグレーになりました。この状態で Visual Studio Code を close してまた開きます。

計画通り! C# 拡張機能がいなくなりました。

【 その3 】 C# Dev Kit 拡張機能のインストール

■ 拡張機能のインストール

前回 Visual Studio Code の拡張機能をアンインストールしたので、今回は本当に C# Dev Kit をインストールしてみます。

■ 初期状態

拡張機能が何も入っていない状態です。

■ インストール

C# で拡張機能を検索します。

C# Dev Kit が一番上に出たので [ Install ] をクリックしてインストールします。

インストール中......

インストール終了

■ インストールされた拡張機能

C# Dev Kit をインストールした結果がこちらです。拡張機能が 4 つインストールされています。確かに必要だろう拡張機能ではあります。これはなぜでしょう?

こちらと......

こちらの拡張機能がインストールされていからですね。

【 その4 】 プロジェクトの作成と実行

■ 前回

前回で、C# Dev Kit をインストールできました。今回からいよいよ使い始めてみましょう。
今回はまずはプロジェクトの作成と実行まで行きます。

■ フォルダーを開いた状態

まずは、プロジェクトを作るフォルダーを作って、Visual Studio Code でフォルダーを開いた状態にしました。ここでは「 0001 」というフォルダーを開いています。

■ コマンドパレットからプロジェクトを作成

Ctrl+Shift+P でコマンドパレットを開くと、「 .NET 」のコマンドがいくつか現れます。こいつらを使っていきます。
まずはプロジェクトを作りたいので [ New Project... ] を選択します。

すると、プロジェクトテンプレートがたくさん出てきます。MAUI や ASP.NET Core、Blazor のプロジェクトに対応していることが分かります。逆に我らが WPF や WinUI は作れないようです。無念。


というわけで動かすのに準備が少なく、かつ動いたことが分かりやすそうな ASP.NET Core MVC で作ってみたいと思います。「 ASP.NET Core Web App (Model View Controller) 」を選択します。

プロジェクト名を入力します。

ディレクトリ選択。今回は既にプロジェクトを作るフォルダーを開いているので「 Default directory 」でやっていきます。

計画通り! プロジェクトが作成されました。プロジェクトというかソリューションができていますが、Visual Studio と同じ動きなので、Visual Studio 派にとってはうれしい挙動ですね。

■ ビルド

プロジェクトができたのでビルドしてみましょう。ビルドは正直ターミナルからコマンドでもいい気もしますが、メニューから何でもできるのが IDE としてうれしいですね。コマンドパレットに「 Build 」があるので選択します。

ビルドできました! 実際簡単!

■ 実行したい

されいよいよ実行です。コマンドパレットを開いて......なんということでしょう Run や Debug がありません!

■ Run and Degub タブから

Visual Studio Code の「 Run and Debug 」タブからやっていきます。
「 Run and Debug 」ボタンを押して......。

「Web App (Chrome)」......。

「Add Configuration...」......。


動きません! 違う選択肢をとってみます。

■ [C#]

実行の緑右三角の選択肢から「 C# 」を選んでみます。


ここで緑右三角!

実行されました!

手順がかなり Visual Studio に近づいていますね。これなら、コマンドライン一切わからん Visual Studio 派もにっこりです。

【 その5 】 実行するための launch.json

■ 前回の launch.json

前回 C# Dev Kit でプロジェクトを新規作成して実行までしたときの launch.json は次のようになっていました。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch (web)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>",
            "args": [],
            "cwd": "${workspaceFolder}",
            "stopAtEntry": false,
            "serverReadyAction": {
                "action": "openExternally",
                "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceFolder}/Views"
            }
        },

        {
            "type": "chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:8080",
            "webRoot": "${workspaceFolder}"
        }
    ]
}

これは [ Add configuration... ] した結果こうなったのですが、C# Dev Kit ではこの手順は不要なようです。

■ 今動いている状態

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:8080",
            "webRoot": "${workspaceFolder}"
        }
    ]
}

この状態で動きました。[ Add configuration... ] なしで、いきなり C# のところからプロジェクトを選べばいいようです。Visual Studio 派にうれしい仕様!

■ そのようなホストは不明です。

今回試している際に次のようなエラーが出て実行ができないことがありました。

そのようなホストは不明です。
[Window Title]
Visual Studio Code

[Main Instruction]
Build Failures

[Content]
'<ソリューションのパス>\WebAppSample1\WebAppSample1.csproj' failed to build. Would you like to continue and run the last successful build?

[Yes] [No]

■ 対策

ネットにつながっていない環境で試していたせいで、nuget が見られていないのが原因だったようです。ネットにつなげましょう。

【 その6 】 ブレークポイント

■ 前回の C# Dev Kit

前回までで、インストール、プロジェクトの新規作成、ビルド、実行までできました。

■ ブレークポイント

今回はブレークポイントで止めてみます。

止まりました! 変数の値も見えています。

【 その7 】 コードの改善提案

■ コードの改善

今回は Visual Studio Code + C# Dev Kit にコードの改善をしてもらいましょう。

■ Visual Studio

まずは比較対象として Visual Studio にコードを改善してもらうとどうなるか見ておきましょう。こんなコードを書いてみました。

int[] array = new int[] { 1,2,3};
List<int> list = new List<int>();
for(int i = 0; i < array.Length; i++)
{
    list.Add(array[i]);
}

すると Visual Studio がこんな感じで改善提案してくれます。



提案を受け入れて Visual Studio にコードを改善してもらうとこうなりました。

using System.Linq;

new List<int>().AddRange(new int[] { 1, 2, 3 });

さすが Visual Studio。いい改善です。

■ Visual Studio Code + C# Dev Kit

Visual Studio Code + C# Dev Kit だとこんな感じです。

順にコードを改善してもらうと最終的にこうなりました。

using System.Linq;

new List<int>().AddRange(((int[])([1, 2, 3])));

すばらしい。Visual Studio とそん色ないですね。
※Visual Studio と違う結果になったのは、Visual Studio が製品版のためまだリリース前の C# 12 の構文 (コレクション式) に対応していないためと思われます。

【 その8 】 コードの提案

■ コードの提案

IntelliCode という機能でよかったでしたっけ? コードを書き始めると 「あなたは次、こういうコードを書くッ!」 とコードを提案してくれる機能。Visual Studio のアレ、とてもいいですよね。コードをタイプする量が激減する素晴らしい機能です。今書いているプログラミング言語にまだ不慣れな方もスムーズにコードを書き進められる素晴らしい機能です。
今回はこの機能が Visual Studio Code + C# Dev Kit でどうなるか、試してみましょう。

■ IntelliCode for C# Dev Kit

今回試すこの機能、「 IntelliCode for C# Dev Kit 」という Visual Studio Code の拡張機能で実現されているのでしょう。C# Dev Kit のインストールを確認したときに、C# Dev Kit をインストールしただけで同時に入ったあの拡張です。

■ 今回試してみるコード

早速試していこうと思います。今回試すコードはこちらです。

int[] array = new int[] { 1, 2, 3 };
List<int> list = new List<int>();
for(int i = 0; i < array.Length; i++)
    list.Add(array[i]);

このコードを提案してもらいながら書いてみます。

■ Visual Studio の場合

まずは前回同様、Visual Studio の場合を見てみます。

  1. 型を書いて変数名を書くと、変数名とその後の値の生成まで提案してくれます。
  2. 型名を書き始めると、使いたいであろう型を提案してくれます。
  3. List<T> の変数を作ったらその変数に対して行うであろうことを提案してくれます。素晴らしいです。残念ながら今回に限っては書きたいことが違いましたけれども、それは今回に限っての話です。
  4. for を書き始めると、初期処理を提案してくれます。
  5. その次は終了条件とループ毎回の処理も提案です。ほとんどコードを書かずに進んでいきます。
  6. for が書き終わったら、for の中身の提案です。完璧な提案です。素晴らしい。

  7. これが完成コードです。ほとんどタイプせずに書き終わりました。
    ※このコードの良し悪しは別として。 ※コード改善提案は 前回確認している ので見てください。

■ C# Dev Kit の場合

いよいよ C# Dev Kit の出番です。

  1. [ × ] Visual Studio では型を書いて変数名を書くと、変数名とその後の値の生成まで提案してくれました。C# Dev Kit ではそこまではまだのようです。
  2. [ ○ ] Visual Studio では型名を書き始めると、使いたいであろう型を提案してくれました。C# Dev Kit でもやってくれます、ステキ!

    また、Visual Studio では変数名を書いただけで全部やってくれたので必要ありませんでしたが、new の後に続く型名は提案してくれました。ナイス!
  3. [ × ] Visual Studio では List<T> の変数を作ったらその変数に対して行うであろうことを提案してくれました。C# Dev Kit ではそこまではまだのようです。
  4. [ × ] Visual Studio では for を書き始めると、初期処理を提案してくれました。C# Dev Kit ではそこまではまだのようです。
  5. [ △ ] その後の終了条件とループ毎回の処理も提案もまだのようですが、変数を書けば使うであろうプロパティ等の提案は OK です。グレイト!
  6. [ × ] Visual Studio では for が書き終わったら、for の中身の提案してくれましたが。C# Dev Kit ではそこまではまだのようです。
    ちなみに終了条件は手でタイプしましたが手癖が出てしまって Visual Studio のおすすめコードと違う書き方をしてしまいました......。

    ただ、for の中身を書く時も、使うだろうメソッドは提案してくれたので、ここはクール!

    メソッドの引数はもう少しな結果でしたがよいでしょう。
  7. これが完成コードです。Visual Studio と比べたらタイプ量は多かったですが、十分じゃないでしょうか? Visual Studio がすごすぎるだけです。

■ コード比較

比較する必要もないのですが、Visual Studio と C# Dev Kit で出来上がったコードです。C# Dev Kit では私が手癖で Visual Studio と違うスタイルで書いてしまった場所や、フォーマッタをまだ聞かせていない部分もありますが、完全に一致ではないでしょうか? 素晴らしいですね。

int[] array = new int[] { 1, 2, 3 };
List<int> list = new List<int>();
for(int i=0;i<array.Length;++i)
  list.Add(array[i]);
int[] array = new int[] { 1, 2, 3 };
List<int> list = new List<int>();
for(int i = 0; i < array.Length; i++)
    list.Add(array[i]);

【 その9 】 ライセンスの適用

■ ライセンスの設定

C# Dev Kit は Visual Studio のライセンスで使えます。つまり商用利用する場合は Visual Studio のライセンスを持っているマイクロソフト アカウントでサインインすると使えると思っておけばよいでしょう。

■ 現在のライセンスの確認

C# のプロジェクトを開いている際に右下に出る [ C# ] アイコンにマウスホバーすると確認できます。ここでは「 indivisual license」になっています。

■ Visual Studio Code でアカウントのサインイン

Visual Studio Code でアカウントのサインインは右下の人のアイコン (設定アイコンの上のアイコン) から行えます。

しかしなんということでしょうマイクロソフト アカウントのサインインが見当たりません。大丈夫です。安心してください。C# のプロジェクトを開くと選択肢が現れました。

■ マイクロソフト アカウントのサインイン

サインインを選択すると、いつもの Web ブラウザが開くのでサインインします。

■ もういちどライセンスの確認


計画通り! エンタープライズのライセンスになりました。

まとめ

C# Dev Kit いいですね。