Windows/Linux/macOS の .NET Core でのコマンド ラインの使用に関する概要Getting started with .NET Core on Windows/Linux/macOS using the command line

このトピックでは、.NET Core CLI ツールを利用し、自分のコンピューターでプラットフォームに依存しないアプリを開発する方法について説明します。This topic will show you how to start developing cross-platforms apps in your machine using the .NET Core CLI tools.

.NET Core CLI ツールセットに慣れていない場合は、「.NET Core SDK overview」(.NET Core SDK の概要) を参照してください。If you're unfamiliar with the .NET Core CLI toolset, read the .NET Core SDK overview.

必須コンポーネントPrerequisites

  • .NET Core SDK 2.1..NET Core SDK 2.1.
  • ユーザーが選んだテキスト エディターまたはコード エディター。A text editor or code editor of your choice.

Hello コンソール アプリHello, Console App!

GitHub の dotnet/samples レポジトリから、サンプル コードを表示またはダウンロードすることができます。You can view or download the sample code from the dotnet/samples GitHub repository. ダウンロード方法については、「サンプルおよびチュートリアル」を参照してください。For download instructions, see Samples and Tutorials.

コマンド プロンプトを開き、Hello という名前のフォルダーを作成します。Open a command prompt and create a folder named Hello. 作成したフォルダーに移動して、次のように入力します。Navigate to the folder you created and type the following:

$ dotnet new console
$ dotnet run

簡単に説明します。Let's do a quick walkthrough:

  1. $ dotnet new console

    dotnet new は、コンソール アプリのビルドに必要な依存関係を含む最新の Hello.csproj プロジェクト ファイルを作成します。dotnet new creates an up-to-date Hello.csproj project file with the dependencies necessary to build a console app. また、アプリケーションのエントリ ポイントを含む基本的なファイルである Program.cs も作成します。It also creates a Program.cs, a basic file containing the entry point for the application.

    Hello.csproj:Hello.csproj:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.2</TargetFramework>
      </PropertyGroup>
    
    </Project>
    

    プロジェクト ファイルでは、依存関係を復元し、プログラムをビルドするために必要なすべてのものを指定します。The project file specifies everything that's needed to restore dependencies and build the program.

    • OutputType タグは、実行可能ファイル (つまり、コンソール アプリケーション) をビルドすることを示します。The OutputType tag specifies that we're building an executable, in other words a console application.
    • TargetFramework タグは、対象の .NET 実装を指定します。The TargetFramework tag specifies what .NET implementation we're targeting. 高度なシナリオでは、複数の対象フレームワークを指定し、1 回の操作でそれらすべてにビルドすることができます。In an advanced scenario, you can specify multiple target frameworks and build to all those in a single operation. このチュートリアルでは、.NET Core 2.1 の場合のビルドについてのみ説明します。In this tutorial, we'll stick to building only for .NET Core 2.1.

    Program.cs:Program.cs:

    using System;
    
    namespace Hello
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
            }
        }
    }
    

    プログラムは using System で始まります。これは、"System 名前空間のすべてがこのファイルのスコープになる" こと意味します。The program starts by using System, which means "bring everything in the System namespace into scope for this file". System 名前空間には、string などの基本的な構造、または数値型が含まれます。The System namespace includes basic constructs such as string, or numeric types.

    次に、Hello という名前空間を定義します。We then define a namespace called Hello. これを必要なものに変更できます。You can change this to anything you want. Program という名前のクラスは、引数として文字列配列を使用する Main メソッドで、その名前空間内に定義されます。A class named Program is defined within that namespace, with a Main method that takes an array of strings as its argument. この配列には、コンパイル済みプログラムの呼び出し時に渡される引数のリストが含まれます。This array contains the list of arguments passed in when the compiled program is called. 実際は、この配列は使用されません。プログラムはコンソールに "Hello World!" とAs it is, this array is not used: all the program is doing is to write "Hello World!" 記述するだけです。to the console. 後に、この引数を利用するようにコードを変更します。Later, we'll make changes to the code that will make use of this argument.

    注意

    .NET Core 2.0 以降、dotnet restore を実行する必要がなくなりました。dotnet newdotnet builddotnet run のような、復元を必要とするあらゆるコマンドによって暗黙的に実行されるためです。Starting with .NET Core 2.0, you don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build and dotnet run. Azure DevOps Services の継続的インテグレーション ビルドなど、明示的な復元が合理的となる一部のシナリオや、復元の時刻を明示的に制御する必要があるビルド システムでは、引き続き有効なコマンドとなります。It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control the time at which the restore occurs.

    dotnet newdotnet restore を暗黙的に呼び出します。dotnet new calls dotnet restore implicitly. dotnet restore は、NuGet (.NET パッケージ マネージャー) を呼び出して依存関係ツリーを復元します。dotnet restore calls into NuGet (.NET package manager) to restore the tree of dependencies. NuGet は、Hello.csproj ファイルを分析し、ファイルに記載されている依存関係をダウンロードし (またはコンピューターのキャッシュから取得し)、サンプルをコンパイルして実行するために必要な obj/project.assets.json ファイルを記述します。NuGet analyzes the Hello.csproj file, downloads the dependencies defined in the file (or grabs them from a cache on your machine), and writes the obj/project.assets.json file, which is necessary to compile and run the sample.

    重要

    .NET Core 1.x バージョンの SDK を使用している場合は、dotnet new の呼び出し後に dotnet restore を自分で呼び出す必要があります。If you're using a .NET Core 1.x version of the SDK, you'll have to call dotnet restore yourself after calling dotnet new.

  2. $ dotnet run

    dotnet run は、dotnet build を呼び出してビルド ターゲットがビルドされていることを確認した後、dotnet <assembly.dll> を呼び出してターゲット アプリケーションを実行します。dotnet run calls dotnet build to ensure that the build targets have been built, and then calls dotnet <assembly.dll> to run the target application.

    $ dotnet run
    Hello World!
    

    dotnet build を実行し、ビルド コンソール アプリケーションを実行しないでコードをコンパイルすることもできます。Alternatively, you can also execute dotnet build to compile the code without running the build console applications. これで、Windows で dotnet bin\Debug\netcoreapp2.1\Hello.dll を使用して (Windows 以外のシステムの場合は / を使用して) 実行できる DLL ファイルとしてアプリケーションがコンパイルされます。This results in a compiled application as a DLL file that can be run with dotnet bin\Debug\netcoreapp2.1\Hello.dll on Windows (use / for non-Windows systems). アプリケーションには引数を指定することもできます。それについてはこのトピックの後半で説明します。You may also specify arguments to the application as you'll see later on the topic.

    $ dotnet bin\Debug\netcoreapp2.1\Hello.dll
    Hello World!
    

    高度なシナリオでは、展開可能なプラットフォーム固有のファイルの自己完結型セットとしてアプリケーションをビルドし、.NET Core が必ずしもインストールされているとは限らないコンピューターに対して実行することができます。As an advanced scenario, it's possible to build the application as a self-contained set of platform-specific files that can be deployed and run to a machine that doesn't necessarily have .NET Core installed. 詳細については、「.NET Core アプリケーション展開」を参照してください。See .NET Core Application Deployment for details.

プログラムの拡張Augmenting the program

プログラムを少し変更してみましょう。Let's change the program a bit. フィボナッチ数は面白いです。アプリを実行した人に挨拶をする引数を使用するためにフィボナッチ数も追加しましょう。Fibonacci numbers are fun, so let's add that in addition to use the argument to greet the person running the app.

  1. Program.cs ファイルの内容を次のコードで置き換えます。Replace the contents of your Program.cs file with the following code:

    using System;
    
    namespace Hello
    {
        class Program
        {
            static void Main(string[] args)
            {
                if (args.Length > 0)
                {
                    Console.WriteLine($"Hello {args[0]}!");
                }
                else
                {
                    Console.WriteLine("Hello!");
                }
    
                Console.WriteLine("Fibonacci Numbers 1-15:");
    
                for (int i = 0; i < 15; i++)
                {
                    Console.WriteLine($"{i + 1}: {FibonacciNumber(i)}");
                }
            }
    
            static int FibonacciNumber(int n)
            {
                int a = 0;
                int b = 1;
                int tmp;
    
                for (int i = 0; i < n; i++)
                {
                    tmp = a;
                    a = b;
                    b += tmp;
                }
    
                return a;
            }
    
        }
    }
    
  2. dotnet build を実行し、変更内容をコンパイルします。Execute dotnet build to compile the changes.

  3. アプリにパラメーターを渡すプログラムを実行します。Run the program passing a parameter to the app:

    $ dotnet run -- John
    Hello John!
    Fibonacci Numbers 1-15:
    1: 0
    2: 1
    3: 1
    4: 2
    5: 3
    6: 5
    7: 8
    8: 13
    9: 21
    10: 34
    11: 55
    12: 89
    13: 144
    14: 233
    15: 377
    

以上です。And that's it! 自由に Program.cs を拡張できます。You can augment Program.cs any way you like.

複数のファイルの操作Working with multiple files

単純な 1 回だけのプログラムには 1 つのファイルで十分ですが、より複雑なアプリを開発する場合、プロジェクトに複数のソース ファイルを用意する必要があるでしょう。先のフィボナッチのサンプルから作成してみましょう。いくつかのフィボナッチ値をキャッシュしてから、再帰機能を追加します。Single files are fine for simple one-off programs, but if you're building a more complex app, you're probably going to have multiple source files on your project Let's build off of the previous Fibonacci example by caching some Fibonacci values and add some recursive features.

  1. 次のコードを利用し、FibonacciGenerator.cs という名前の Hello ディレクトリ内に新しいファイルを追加します。Add a new file inside the Hello directory named FibonacciGenerator.cs with the following code:

    using System;
    using System.Collections.Generic;
    
    namespace Hello
    {
        public class FibonacciGenerator
        {
            private Dictionary<int, int> _cache = new Dictionary<int, int>();
            
            private int Fib(int n) => n < 2 ? n : FibValue(n - 1) + FibValue(n - 2);
            
            private int FibValue(int n)
            {
                if (!_cache.ContainsKey(n))
                {
                    _cache.Add(n, Fib(n));
                }
                
                return _cache[n];
            }
            
            public IEnumerable<int> Generate(int n)
            {
                for (int i = 0; i < n; i++)
                {
                    yield return FibValue(i);
                }
            }
        }
    }
    
  2. Program.cs ファイルの Main メソッドを変更し、次の例のように新しいクラスをインスタンス化し、そのメソッドを呼び出します。Change the Main method in your Program.cs file to instantiate the new class and call its method as in the following example:

    using System;
    
    namespace Hello
    {
        class Program
        {
            static void Main(string[] args)
            {
                var generator = new FibonacciGenerator();
                foreach (var digit in generator.Generate(15))
                {
                    Console.WriteLine(digit);
                }
            }
        }
    }
    
  3. dotnet build を実行し、変更内容をコンパイルします。Execute dotnet build to compile the changes.

  4. dotnet run を実行し、アプリを実行します。Run your app by executing dotnet run. プログラムの出力は次のようになります。The following shows the program output:

    $ dotnet run
    0
    1
    1
    2
    3
    5
    8
    13
    21
    34
    55
    89
    144
    233
    377
    

以上です。And that's it! これで、ここで学習した基本的な概念を利用し、自分だけのプログラムを作成できます。Now, you can start using the basic concepts learned here to create your own programs.

このチュートリアルで紹介した、アプリケーションを実行するコマンドと手順は、開発時にのみ利用されます。Note that the commands and steps shown in this tutorial to run your application are used during development time only. アプリの展開に進むときは、.NET Core アプリの別の展開方法dotnet publish コマンドを利用した方が効果的な場合もあります。Once you're ready to deploy your app, you'll want to take a look at the different deployment strategies for .NET Core apps and the dotnet publish command.

関連項目See also