sci

最果て風呂

VSCode と C# Extension

Vim の調子が悪かった時に、試しで Visual Studio Code の Terminal で動かしてみたら意外と良かったのです。VSCode は Markdown ファイルの編集をする程度の使い方しかしていなかったのですが、これをきっかけに本格的に使ってみたくなりました。

とは言っても、普段は EmacsVim を使っているので、VSCode らしさを体験できるものでなければ、すぐに飽きてしまいそうです。

何があるだろう?と考えた時にすぐに浮かんできたのは C# です。Microsoft はあまり好きではなかったのですが、C# の取っ付きやすさと Visual Studio のわかりやすさで、高感度がグンっ⤴と上昇したのでした。

ということで、C# Extension をインストールしてみました。VSCode の Menu → View → Extensions から C# を検索して、緑色の Install ボタンを押します。ネットワークはデータ SIM 運用なので、機能拡張をダウンロードするにも時間がかかります。

VSCode を再起動してから .cs ファイルを開いてみたのですけれど、今の状態では Debug をすることができず「.NET Core SDK をダウンロードせぇよ」と表示されてしまいました。

リンクをクリックすると Microsoftページ が開くので、ダウンロードを開始します。ファイルは .pkg 形式で、容量は 121MB あり、ダウンロードに 15 分程かりました。ビデオのお姉さんの環境ではアッー!という間に終わっていたので、とても羨しいです(>_<)

ところで、最近は brew を使っている例が多いのですが、どのくらいの人がこれを使っているのでしょう?わたしは相変らず昔ながらの方法でやっています。gem や pip や npm や cabal と opam は使っているのですけどね……

さて、現時点ではバージョン 1.0.3 のものがダウンロードされました。.pkg ファイルをダブルクリックしてインストールをします。/urs/local/share/dotnet 以下にインストールされるようです。そして先のページに従って、コマンドを入力していきます。

> dotnet new console -o hwapp

Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.

Telemetry
--------------
The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community.
You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell.
You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry.

Configuring...
-------------------
A command is running to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
Decompressing 100% 5118 ms
Expanding 100% 10108 ms
Getting ready...
Content generation time: 390.6063 ms
The template "Console Application" created successfully.

hwapp/ 内には Program.cs*hwapp.csproj* が生成されました。続けて

> dotnet restore

  Restoring packages for /Users/home/hwapp/hwapp.csproj...
  Generating MSBuild file /Users/home/hwapp/obj/hwapp.csproj.nuget.g.props.
  Generating MSBuild file /Users/home/hwapp/obj/hwapp.csproj.nuget.g.targets.
  Writing lock file to disk. Path: /Users/home/hwapp/obj/project.assets.json
  Restore completed in 564.89 ms for /Users/home/hwapp/hwapp.csproj.
  
  NuGet Config files used:
      /Users/home/.nuget/NuGet/NuGet.Config
  
  Feeds used:
      https://api.nuget.org/v3/index.json

> dotnet run
Hello World!

で動作確認は完了しました。

あらためて VSCode で .cs ファイルを開いてみると、自動的にデバッグが開始されました。されたのですけれど、

Error The .NET Core debugger cannot be installed. OpenSSL is not correctly configured. See the C# output cha...

とエラーが出てしまいます。OpenSSL は自分でビルドしてインストールしているので大丈夫かなぁと思っていたのですけれども、ライブラリの場所は決め打ちになっているみたいですね。ページの ① にしたがって

> sudo ln -s /usr/local/ssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
> sudo ln -s /usr/local/ssl/lib/libssl.1.0.0.dylib /usr/local/lib/

でリンクを張りました。これでエラーは出なくなったものの、今度は何か操作をしても何も応答がなくなってしまいました(フリーズしたという意味ではありません)。機能拡張の使い方が良くわかりません。

あぁ、単独のファイルを開いただけでは何もしないんですね。プロジェクトのフォルダを開いて、左側のペインからファイルを開くとデバッグが始まりました!

補完や関数のヘルプなど、IDE っぽくなりましたが、VSCode の動作やビルドがかなり遅い……。コンソールアプリを作るだけなら、EmacsVim で入力して、ターミナル上で mcs を使った方が良さそうな感じです。

C# が好きとは言いつつ全く使っていないのがバレバレなのですが、5 年前に作成したものをビルドしてみると、Mono では問題ないものが .NET Core ではエラーになってしまいました。ArrayList が使えなくなっているんですね。C# というよりも .NET Framework/Core についての知識を更新しないといけないようです……