MacでC#である。dotnet/coreをMacで実行するとは、つまりそういうことだ。
近年のMicrosoftは大好きだ。
概要
dotnet/coreの環境構築
- dot net SDK 2.1.301
インストーラーに従いインストール。
$ curl -O https://download.microsoft.com/download/D/0/4/D04C5489-278D-4C11-9BD3-6128472A7626/dotnet-sdk-2.1.301-osx-gs-x64.pkg $ open dotnet-sdk-2.1.301-osx-gs-x64.pkg
dotnetコマンドを実行し、バージョンの確認。
$ dotnet --version 2.1.301
$ dotnet Usage: dotnet [options] Usage: dotnet [path-to-application] Options: -h|--help Display help. --info Display .NET Core information. --list-sdks Display the installed SDKs. --list-runtimes Display the installed runtimes. path-to-application: The path to an application .dll file to execute.
$ dotnet help .NET Core へようこそ! --------------------- .NET Core についての詳細情報: https://aka.ms/dotnet-docs 'dotnet --help' を使用して利用可能なコマンドを確認するか、次にアクセスしてください: https://aka.ms/dotnet-cli-docs テレメトリ --------- .NET Core ツールは、エクスペリエンスの向上に役立つ利用状況データを収集します。データは匿名で、コマンドライン引数が含まれません。データは Microsoft によって収集され、コミュニティと共有されます。テレメトリをオプトアウトするには、お好きなシェルを使用して、DOTNET_CLI_TELEMETRY_OPTOUT 環境変数を '1' または 'true' に設定します。 .NET Core CLI ツールのテレメトリに関する詳細情報をお読みください: https://aka.ms/dotnet-cli-telemetry ASP.NET Core ------------ ASP.NET Core HTTPS 開発証明書が正常にインストールされました。 証明書を信頼する (Windows および macOS のみ) には、まず 'dotnet tool install dotnet-dev-certs -g --version 2.1.0-preview1-final' を実行して dev-certs ツールをインストールし、次に 'dotnet-dev-certs https --trust' を実行します。 HTTPS を構成する方法の詳細については、https://go.microsoft.com/fwlink/?linkid=848054 をご覧ください。 .NET コマンド ライン ツール (2.1.301) 使用法: dotnet [runtime-options] [path-to-application] 使用法: dotnet [sdk-options] [command] [arguments] [command-options] path-to-application: 実行するアプリケーション .dll ファイルへのパス。 SDK コマンド: new .NET プロジェクトを初期化します。 restore .NET プロジェクトに指定されている依存関係を復元します。 run .NET プロジェクトをコンパイルして、直ちに実行します。 build .NET プロジェクトを構築します。 publish 展開用の .NET プロジェクトを発行します (ランタイムを含む)。 test プロジェクトに指定されているテスト ランナーを使用して、単体テストを実行します。 pack NuGet パッケージを作成します。 migrate project.json ベースのプロジェクトを msbuild ベースのプロジェクトに移行します。 clean ビルド出力を消去します。 sln ソリューション (SLN) ファイルを変更します。 add 参照をプロジェクトに追加します。 remove 参照をプロジェクトから削除します。 list プロジェクトの参照またはインストール済みツールを一覧表示します。 nuget 追加の NuGet コマンドを提供します。 msbuild Microsoft Build Engine (MSBuild) を実行します。 vstest Microsoft Test Execution Command Line Tool を実行します。 store 指定されたアセンブリを実行時ストアに格納します。 tool .NET のエクスペリエンスを向上するツールをインストールするか、使用します。 build-server ビルドによって開始されたサーバーとやり取りします。 help ヘルプを表示します。 共通のオプション: -v|--verbosity コマンドの詳細レベルを設定します。使用可能な値: q[uiet]、m[inimal]、n[ormal]、d[etailed]、diag[nostic]。 -h|--help ヘルプを表示します。 コマンドに関する詳細情報については、'dotnet COMMAND --help' を実行します。 sdk-options: --version 使用中の .NET Core SDK バージョンを表示します。 --info .NET Core 情報を表示します。 --list-sdks インストール済み SDK を表示します。 --list-runtimes インストール済みランタイムを表示します。 -d|--diagnostics 診断出力を有効にします。 runtime-options: --additionalprobingpath <path> 調査ポリシーと調査対象アセンブリを含むパス。 --fx-version <version> アプリケーションを実行するために使用するインストール済み Shared Framework のバージョン。 --roll-forward-on-no-candidate-fx 候補がない Shared Framework に対するロールフォワードが有効です。 --additional-deps <path> 追加の deps.json ファイルへのパス。 Additional tools ('dotnet [tool-name] --help' for more information): dev-certs Create and manage development certificates. ef Entity Framework Core command-line tools. sql-cache SQL Server cache command-line tools. user-secrets Manage development user secrets. watch Start a file watcher that runs a command when files change.
dotnet/coreを実行
.NET and C# - Get started in 10 minutes を試し、dotnet/coreを実行。
- dotnetコマンドでアプリケーションを作成
- 作成されたテンプレートの確認
- 実行
コンソールアプリケーションの作成
$ dotnet new console -o App 準備しています... テンプレート "Console Application" が正常に作成されました。 作成後のアクションを処理しています... 'dotnet restore' を App/App.csproj で実行しています... /path/to/App/App.csproj のパッケージを復元しています... Microsoft.NETCore.DotNetAppHost 2.1.0 をインストールしています。 Microsoft.NETCore.DotNetHostResolver 2.1.0 をインストールしています。 Microsoft.NETCore.DotNetHostPolicy 2.1.0 をインストールしています。 Microsoft.NETCore.Targets 2.1.0 をインストールしています。 Microsoft.NETCore.App 2.1.0 をインストールしています。 MSBuild ファイル /path/to/App/obj/App.csproj.nuget.g.props を生成しています。 MSBuild ファイル /path/to/App/obj/App.csproj.nuget.g.targets を生成しています。 /path/to/App/App.csproj の復元が 5.97 sec で完了しました。 正常に復元されました。
作成されたテンプレートの確認
$ cd App/ $ ls App.csproj Program.cs obj
App.csprojの中身を確認
$ cat App.csproj <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> </Project>
Program.csの中身を確認
$ cat Program.cs using System; namespace App { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
実行
$ dotnet run Hello World!
Nugetの導入、自作ライブラリを作成
macOS での .NET Core の概要 | Microsoft Docs をなぞり、Nugetを組み込む。
Nugetはパッケージマネージャ。
dotnet new classlib -o library
$ dotnet new classlib -o library テンプレート "Class library" が正常に作成されました。 作成後のアクションを処理しています... 'dotnet restore' を library/library.csproj で実行しています... /path/to/library/library.csproj のパッケージを復元しています... MSBuild ファイル /path/to/library/obj/library.csproj.nuget.g.props を生成しています。 MSBuild ファイル /path/to/library/obj/library.csproj.nuget.g.targets を生成しています。 /path/to/library/library.csproj の復元が 275.86 ms で完了しました。 正常に復元されました。
$ dotnet sln add library/library.csproj プロジェクト `library/library.csproj` をソリューションに追加しました。
Newtonsoft.Jsonをインストール
$ dotnet add library package Newtonsoft.Json Writing /var/folders/jn/zrzfgbbd07s_ph4wgm70dsx40000gn/T/tmpPbxSjT.tmp info : パッケージ 'Newtonsoft.Json' の PackageReference をプロジェクト '/path/to/library/library.csproj' に追加しています。 log : /path/to/library/library.csproj のパッケージを復元しています... info : GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json info : OK https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json 175 ミリ秒 info : パッケージ 'Newtonsoft.Json' は、プロジェクト '/path/to/library/library.csproj' のすべての指定されたフレームワークとの互換性があります。 info : ファイル '/path/to/library/library.csproj' に追加されたパッケージ 'Newtonsoft.Json' バージョン '11.0.2' の PackageReference
$ dotnet restore /path/to/library/library.csproj のパッケージを復元しています... /path/to/library/library.csproj の復元が 231.68 ms で完了しました。
$ dotnet build .NET Core 向け Microsoft (R) Build Engine バージョン 15.7.179.6572 Copyright (C) Microsoft Corporation.All rights reserved. /path/to/library/library.csproj の復元が 57.28 ms で完了しました。 library -> /path/to/library/bin/Debug/netstandard2.0/library.dll ビルドに成功しました。 0 個の警告 0 エラー 経過時間 00:00:04.29
作成したlibraryを使う
macOS での .NET Core の概要 | Microsoft Docs をなぞり、作成したLibrary.Thingを使い、実行する。
ソリューションを追加
$ dotnet sln add app/app.csproj プロジェクト `app/app.csproj` をソリューションに追加しました。
ライブラリの依存関係を追加
$ dotnet add app/app.csproj reference library/library.csproj 参照 `..\library\library.csproj` がプロジェクトに追加されました。
実装。libraryを実際に使うコードに変更
Library.Thingを実際に使う。
$ git diff diff --git a/path/to/App/Program.cs b/path/to/App/Program.cs index 227ce6d..ae778b9 100644 --- a/path/to/App/Program.cs +++ b/path/to/App/Program.cs @@ -1,4 +1,6 @@ using System; +using static System.Console; +using Library; namespace App { @@ -7,6 +9,7 @@ namespace App static void Main(string[] args) { Console.WriteLine("Hello World!"); + WriteLine($"The answer is {new Thing().Get(19, 23)}"); } } }
実行
$ dotnet run -p app/app.csproj Hello World! The answer is 42