VSCode と C# Extension
Vim の調子が悪かった時に、試しで Visual Studio Code の Terminal で動かしてみたら意外と良かったのです。VSCode は Markdown ファイルの編集をする程度の使い方しかしていなかったのですが、これをきっかけに本格的に使ってみたくなりました。
とは言っても、普段は Emacs や Vim を使っているので、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 の動作やビルドがかなり遅い……。コンソールアプリを作るだけなら、Emacs や Vim で入力して、ターミナル上で mcs
を使った方が良さそうな感じです。
C# が好きとは言いつつ全く使っていないのがバレバレなのですが、5 年前に作成したものをビルドしてみると、Mono では問題ないものが .NET Core ではエラーになってしまいました。ArrayList が使えなくなっているんですね。C# というよりも .NET Framework/Core についての知識を更新しないといけないようです……