macOS での .NET Core の概要Getting started with .NET Core on macOS

このドキュメントでは、macOS 用の .NET Core ソリューションを作成する手順とワークフローを説明します。This document provides the steps and workflow to create a .NET Core solution for macOS. プロジェクトと単体テストを作成し、デバッグ ツールを使用して、NuGet からサードパーティ製ライブラリを組み込む方法について説明します。Learn how to create projects, unit tests, use the debugging tools, and incorporate third-party libraries via NuGet.

注意

この記事では、macOS で Visual Studio Code を使用します。This article uses Visual Studio Code on macOS.

必要条件Prerequisites

.NET Core SDK のインストール。Install the .NET Core SDK. .NET Core SDK には、.NET Core のフレームワークとランタイムの最新リリースが含まれています。The .NET Core SDK includes the latest release of the .NET Core framework and runtime.

Visual Studio Code のインストール。Install Visual Studio Code. この記事の中では、.NET Core の開発エクスペリエンスが向上する Visual Studio Code 拡張機能もインストールします。During the course of this article, you also install Visual Studio Code extensions that improve the .NET Core development experience.

Visual Studio Code C# 拡張機能をインストールするには、Visual Studio Code を開き、F1 を押して Visual Studio Code パレットを開きます。Install the Visual Studio Code C# extension by opening Visual Studio Code and pressing F1 to open the Visual Studio Code palette. ext install」と入力して、拡張機能の一覧を表示します。Type ext install to see the list of extensions. C# 拡張機能を選択します。Select the C# extension. Visual Studio Code を再起動して、拡張機能をアクティブにします。Restart Visual Studio Code to activate the extension. 詳細については、Visual Studio Code C# 拡張機能のドキュメントを参照してください。For more information, see the Visual Studio Code C# Extension documentation.

作業の開始Getting started

このチュートリアルでは 3 つのプロジェクト (ライブラリ プロジェクト、そのライブラリ プロジェクトのテスト、およびライブラリを使用するコンソール アプリケーション) を作成します。In this tutorial, you create three projects: a library project, tests for that library project, and a console application that makes use of the library. GitHub の dotnet/docs レポジトリで、このトピックのソースを表示またはダウンロードすることができます。You can view or download the source for this topic at the dotnet/docs repository on GitHub. ダウンロード方法については、「サンプルおよびチュートリアル」を参照してください。For download instructions, see Samples and Tutorials.

Visual Studio Code を開始します。Start Visual Studio Code. Ctrl+\</kbd> (バッククォートまたはアクサン グラーブ) キーを押すか、メニューから **[表示]、[統合ターミナル]** の順に選択し、Visual Studio Code で埋め込みターミナルを開きます。</span><span class="sxs-lookup"><span data-stu-id="70ba1-123">Press <kbd>Ctrl</kbd>+<kbd>\\ (the backquote or backtick character) or select View > Integrated Terminal from the menu to open an embedded terminal in Visual Studio Code. Visual Studio Code の外部で作業を行う場合は、エクスプローラーの [コマンド プロンプトで開く] コマンド (Ma または Linux の場合は [ターミナルで開く]) を使用して外部シェルを開くこともできます。You can still open an external shell with the Explorer Open in Command Prompt command (Open in Terminal on Mac or Linux) if you prefer to work outside of Visual Studio Code.

1 つ以上の .NET Core プロジェクトのコンテナーとして機能する、ソリューション ファイルの作成を開始します。Begin by creating a solution file, which serves as a container for one or more .NET Core projects. ターミナルで、golden フォルダーを作成し、そのフォルダーを開きます。In the terminal, create a golden folder and open the folder. このフォルダーはソリューションのルートです。This folder is the root of your solution. 以下のように、dotnet new コマンドを実行して新しいソリューション golden.sln を作成します。Run the dotnet new command to create a new solution, golden.sln:

dotnet new sln

golden フォルダーから以下のコマンドを実行して、ライブラリ プロジェクトを作成します。library フォルダーには、library.csprojClass1.cs という 2 つのファイルが生成されます。From the golden folder, execute the following command to create a library project, which produces two files,library.csproj and Class1.cs, in the library folder:

dotnet new classlib -o library

以下のように、dotnet sln コマンドを実行し、新しく作成された library.csproj プロジェクトをソリューションに追加します。Execute the dotnet sln command to add the newly created library.csproj project to the solution:

dotnet sln add library/library.csproj

library.csproj ファイルには、次の情報が含まれています。The library.csproj file contains the following information:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
  </PropertyGroup>

</Project>

このライブラリ メソッドでは、JSON 形式でオブジェクトのシリアル化と逆シリアル化を行います。Our library methods serialize and deserialize objects in JSON format. JSON のシリアル化および逆シリアル化をサポートするには、Newtonsoft.Json NuGet パッケージへの参照を追加します。To support JSON serialization and deserialization, add a reference to the Newtonsoft.Json NuGet package. dotnet add コマンドにより、新しい項目がプロジェクトに追加されます。The dotnet add command adds new items to a project. NuGet パッケージへの参照を追加するには、dotnet add package コマンドを使用して、パッケージの名前を指定します。To add a reference to a NuGet package, use the dotnet add package command and specify the name of the package:

dotnet add library package Newtonsoft.Json

これにより、Newtonsoft.Json とその依存関係がライブラリ プロジェクトに追加されます。This adds Newtonsoft.Json and its dependencies to the library project. あるいは、library.csproj ファイルを手動で編集し、次のノードを追加します。Alternatively, manually edit the library.csproj file and add the following node:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
</ItemGroup>

実行 dotnet restore 、(注を参照してください) を依存関係を復元しを作成、 objフォルダーライブラリ3ファイルが含まれるなど、 project.assets.jsonファイル。Execute dotnet restore, (see note) which restores dependencies and creates an obj folder inside library with three files in it, including a project.assets.json file:

dotnet restore

library フォルダーで、ファイル Class1.cs の名前を Thing.cs に変更します。In the library folder, rename the file Class1.cs to Thing.cs. このコードを次のコードを使って置き換えます。Replace the code with the following:

using static Newtonsoft.Json.JsonConvert;

namespace Library
{
    public class Thing
    {
        public int Get(int left, int right) =>
            DeserializeObject<int>($"{left + right}");
    }
}

Thing クラスには、Get という 1 つのパブリック メソッドが含まれます。このメソッドは 2 つの数値の合計を返しますが、そのためには合計値を文字列に変換した後、それを整数に逆シリアル化します。The Thing class contains one public method, Get, which returns the sum of two numbers but does so by converting the sum into a string and then deserializing it into an integer. このコードでは、using static ディレクティブ式本体のメンバー、および補間文字列など、C# の最新の機能をいくつか利用しています。This makes use of a number of modern C# features, such as using static directives, expression-bodied members, and interpolated strings.

dotnet build コマンドを使用して、ライブラリをビルドします。Build the library with the dotnet build command. これにより、golden/library/bin/Debug/netstandard1.4library.dll ファイルが生成されます。This produces a library.dll file under golden/library/bin/Debug/netstandard1.4:

dotnet build

テスト プロジェクトの作成Create the test project

ライブラリのテスト プロジェクトをビルドします。Build a test project for the library. golden フォルダーから、次のようにして新しいテスト プロジェクトを作成します。From the golden folder, create a new test project:

dotnet new xunit -o test-library

次のようにしてテスト プロジェクトをソリューションに追加します。Add the test project to the solution:

dotnet sln add test-library/test-library.csproj

コンパイラがライブラリ プロジェクトを見つけて使用できるように、前のセクションで作成したライブラリにプロジェクト参照を追加します。Add a project reference the library you created in the previous section so that the compiler can find and use the library project. 次の dotnet add reference コマンドを使用します。Use the dotnet add reference command:

dotnet add test-library/test-library.csproj reference library/library.csproj

あるいは、test-library.csproj ファイルを手動で編集し、次のノードを追加します。Alternatively, manually edit the test-library.csproj file and add the following node:

<ItemGroup>
  <ProjectReference Include="..\library\library.csproj" />
</ItemGroup>

これで依存関係が正しく構成されました。次は、ライブラリのテストを作成します。Now that the dependencies have been properly configured, create the tests for your library. UnitTest1.cs を開き、内容を次のコードに置き換えます。Open UnitTest1.cs and replace its contents with the following code:

using Library;
using Xunit;

namespace TestApp
{
    public class LibraryTests
    {
        [Fact]
        public void TestThing() {
            Assert.NotEqual(42, new Thing().Get(19, 23));
        }
    }
}

最初に失敗する単体テスト (Assert.NotEqual) を作成する場合、値 42 は 19+23 (つまり、42) と等しくないことをアサートすることに注意してください。Note that you assert the value 42 is not equal to 19+23 (or 42) when you first create the unit test (Assert.NotEqual), which will fail. 単体テストのビルドにおける重要な手順は、最初に一度失敗するテストを作成して、そのロジックを確認することです。An important step in building unit tests is to create the test to fail once first to confirm its logic.

golden フォルダーから、次のコマンドを実行します。From the golden folder, execute the following commands:

dotnet restore 
dotnet test test-library/test-library.csproj

これらのコマンドは、再帰的にすべてのプロジェクトを検出し、依存関係を復元してビルドし、xUnit テスト ランナーをアクティブにしてテストを実行します。These commands will recursively find all projects to restore dependencies, build them, and activate the xUnit test runner to run the tests. 予期したとおり、1 つのテストに失敗します。The single test fails, as you expect.

UnitTest1.cs ファイルを編集し、アサーションを Assert.NotEqual から Assert.Equal に変更します。Edit the UnitTest1.cs file and change the assertion from Assert.NotEqual to Assert.Equal. golden フォルダーから次のコマンドを実行し、テストを再実行します。今回は成功します。Execute the following command from the golden folder to re-run the test, which passes this time:

dotnet test test-library/test-library.csproj

コンソール アプリの作成Create the console app

次の手順で作成するコンソール アプリは、前の手順で作成したライブラリ プロジェクトに対する依存関係を認識し、実行時にそのライブラリ メソッドを呼び出します。The console app you create over the following steps takes a dependency on the library project you created earlier and calls its library method when it runs. この開発パターンを使用して、複数のプロジェクトで再利用可能なライブラリの作成方法を確認します。Using this pattern of development, you see how to create reusable libraries for multiple projects.

次のように、golden フォルダーから新しいコンソール アプリケーションを作成します。Create a new console application from the golden folder:

dotnet new console -o app

次のように、コンソール アプリ プロジェクトをソリューションに追加します。Add the console app project to the solution:

dotnet sln add app/app.csproj

次のように dotnet add reference コマンドを実行して、ライブラリに対する依存関係を作成します。Create the dependency on the library by running the dotnet add reference command:

dotnet add app/app.csproj reference library/library.csproj

実行dotnet restore(注を参照してください) ソリューションの 3 つのプロジェクトの依存関係を復元します。Run dotnet restore (see note) to restore the dependencies of the three projects in the solution. Program.cs を開き、Main メソッドの内容を次の行に置き換えます。Open Program.cs and replace the contents of the Main method with the following line:

WriteLine($"The answer is {new Thing().Get(19, 23)}");

次のように、2 つの using ディレクティブを Program.cs ファイルの先頭に追加します。Add two using directives to the top of the Program.cs file:

using static System.Console;
using Library;

次の dotnet run コマンドを実行して、実行可能ファイルを実行します。dotnet run-p オプションは、メイン アプリケーションのプロジェクトを指定します。Execute the following dotnet run command to run the executable, where the -p option to dotnet run specifies the project for the main application. アプリは "The answer is 42" という文字列を生成します。The app produces the string "The answer is 42".

dotnet run -p app/app.csproj

アプリケーションのデバッグDebug the application

Main メソッドの WriteLine ステートメントにブレークポイントを設定します。Set a breakpoint at the WriteLine statement in the Main method. そのためには、カーソルが WriteLine 行にある状態で F9 キーを押すか、ブレークポイントを設定する行の左余白でマウスをクリックします。Do this by either pressing the F9 key when the cursor is over the WriteLine line or by clicking the mouse in the left margin on the line where you want to set the breakpoint. コード行の横の余白に赤い丸が表示されます。A red circle will appear in the margin next to the line of code. ブレークポイントに達した場合、ブレークポイント行が実行されるにコードの実行が停止します。When the breakpoint is reached, code execution will stop before the breakpoint line is executed.

Visual Studio Code ツール バーでデバッグ アイコンを選択するか、メニュー バーから [表示]、[デバッグ] の順に選択するか、あるいはキーボード ショートカットの Ctrl+Shift+D を使用して、デバッガー タブを開きます。Open the debugger tab by selecting the Debug icon in the Visual Studio Code toolbar, selecting View > Debug from the menu bar, or using the keyboard shortcut CTRL+SHIFT+D:

Visual Studio Code デバッガー

[再生] ボタンを押して、デバッガーでアプリケーションを開始します。Press the Play button to start the application under the debugger. アプリは実行を開始し、ブレークポイントに達した時点で停止します。The app begins execution and runs to the breakpoint, where it stops. Get メソッドにステップ インし、正しい引数を渡したことを確認します。Step into the Get method and make sure that you have passed in the correct arguments. 答えが 42 であることを確認してください。Confirm that the answer is 42.

注意

Starting with .NET Core 2.0, you don't have to run dotnet restore because it's run implicitly by all commands, such as dotnet build and dotnet run, that require a restore to occur. It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Visual Studio Team Services or in build systems that need to explicitly control the time at which the restore occurs.