Mac で C# の実行環境を作成したい場合、方法は2つあります。

  • A) Visual Studio (for Mac) をインストールする
  • B) .NET だけをインストールする

どちらの方法にするかは、使用したいエディタによって決めてしまうと良いでしょう。

C# を動かすのに必要なのは .NET だけです。

前者の場合、Visual Studio をインストールする際に .NET も合わせてインストールされます。そのため、エディタとして Visual Studio を使用するつもりなのであれば、こちらを選ぶと楽です。

(Visual Studio ではなく)Visual Studio Code などをエディタに使いたいのであれば、後者で .NET だけをインストールするのが良いでしょう。

私は後者の方法を選択しました。そのためそちらだけ説明が詳細になります。

A) Visual Studio (for Mac) をインストールする

以下の公式ドキュメントに従えば大丈夫です。

B) .NET だけをインストールする

公式のドキュメントは以下にありますが …

私は可能なかぎり Homebrew でインストールするのが好みなので、下記でインストールします。

https://formulae.brew.sh/cask/dotnet-sdk

brew install --cask dotnet-sdk

完了後は以下を実行してインストールされていることを確認します。

# インストールされている .NET SDK のバージョンを表示

dotnet --list-sdks

補足:Hello World コンソールアプリの作成

環境が用意できたら、以下で Hello World サンプルを試すことができます。

mkdir HelloWorldExample
cd HelloWorldExample

dotnet new console

dotnet run
# "Hello, World!" がコンソールに表示される

プロジェクトを開くと以下のコードが作成されているはずです。

Program.cs

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!!!");

補足:テンプレートの種類

dotnet new で作成できるテンプレートの種類は多数あります。さきほどのサンプルでは console テンプレートを指定しました。次のコマンドでテンプレート一覧を表示することができます。

dotnet new --list
These templates matched your input:

Template Name                                 Short Name      Language    Tags
--------------------------------------------  --------------  ----------  --------------------------
ASP.NET Core Empty                            web             [C#],F#     Web/Empty
ASP.NET Core gRPC Service                     grpc            [C#]        Web/gRPC
ASP.NET Core Web API                          webapi          [C#],F#     Web/WebAPI
ASP.NET Core Web App                          webapp,razor    [C#]        Web/MVC/Razor Pages
ASP.NET Core Web App (Model-View-Controller)  mvc             [C#],F#     Web/MVC
ASP.NET Core with Angular                     angular         [C#]        Web/MVC/SPA
ASP.NET Core with React.js                    react           [C#]        Web/MVC/SPA
Blazor Server App                             blazorserver    [C#]        Web/Blazor
Blazor WebAssembly App                        blazorwasm      [C#]        Web/Blazor/WebAssembly/PWA
Class Library                                 classlib        [C#],F#,VB  Common/Library
Console App                                   console         [C#],F#,VB  Common/Console
dotnet gitignore file                         gitignore                   Config
Dotnet local tool manifest file               tool-manifest               Config
EditorConfig file                             editorconfig                Config
global.json file                              globaljson                  Config
MSTest Test Project                           mstest          [C#],F#,VB  Test/MSTest
MVC ViewImports                               viewimports     [C#]        Web/ASP.NET
MVC ViewStart                                 viewstart       [C#]        Web/ASP.NET
NuGet Config                                  nugetconfig                 Config
NUnit 3 Test Item                             nunit-test      [C#],F#,VB  Test/NUnit
NUnit 3 Test Project                          nunit           [C#],F#,VB  Test/NUnit
Protocol Buffer File                          proto                       Web/gRPC
Razor Class Library                           razorclasslib   [C#]        Web/Razor/Library
Razor Component                               razorcomponent  [C#]        Web/ASP.NET
Razor Page                                    page            [C#]        Web/ASP.NET
Solution File                                 sln                         Solution
Web Config                                    webconfig                   Config
Worker Service                                worker          [C#],F#     Common/Worker/Web
xUnit Test Project                            xunit           [C#],F#,VB  Test/xUnit

補足:VS Code の C# 拡張

VS Code で C# のコードを書くのであればこちらを入れておきましょう。Microsoft 公式も入れることを推奨しています。

補足:VS Code の C# フォーマット設定

settings.json に以下を追記しましょう。フォーマットを実行した際にコードが整形されます。

"[csharp]": {
  "editor.defaultFormatter": "ms-dotnettools.csharp"
},

フォーマッタは .NET 6 からデフォルトで組み込まれるようになりました。そのため 6 以前のバージョンを利用するのであれば別途インストール作業が必要です。