「.NET Core」の版間の差分
ナビゲーションに移動
検索に移動
(→Ubuntu) |
(→Ubuntu) |
||
38行目: | 38行目: | ||
====[[Ubuntu]]==== | ====[[Ubuntu]]==== | ||
*[https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu Ubuntuにインストール] | *[https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu Ubuntuにインストール] | ||
+ | """.NET アプリを開発する場合は、SDK をインストールします (これにはランタイムが含まれます)。 または、アプリを実行する必要があるだけの場合は、ランタイムをインストールします。 ランタイムをインストールする場合は、ASP.NET Core ランタイムをインストールすることをお勧めします。これには .NET と ASP.NET の Core ランタイムの両方が含まれているため | ||
===アンインストールツール=== | ===アンインストールツール=== |
2022年4月4日 (月) 12:00時点における版
| C Sharp | ASP.NET Core | .NET Core Console | Xamarin |
.NET Core
.NET Core
- 最新の .NET 実装です。オープン ソースで、複数の OS 向けに利用できます。
- .NET Core により、クロスプラットフォーム コンソール アプリケーション、ASP.NET Core Web アプリケーション、およびクラウド サービスをビルドできます。
.NET Standard
- すべての .NET 実装が実装する必要のある基本 API のセットです。
- この API を基本クラス ライブラリ (BCL) と呼びます。
- .NET Standard をターゲットにすることで、どの .NET 実装やどの OS で実行されても、すべての .NET アプリケーションが共有できるライブラリをビルドできます。
.NET API ブラウザ
.NET ソースブラウザ
インストール
ダウンロード
Mac
- https://dotnet.microsoft.com/download/dotnet/3.1
- https://docs.microsoft.com/ja-jp/dotnet/core/install/macos
- ASP.NET Core参照
Linux
Ubuntu
""".NET アプリを開発する場合は、SDK をインストールします (これにはランタイムが含まれます)。 または、アプリを実行する必要があるだけの場合は、ランタイムをインストールします。 ランタイムをインストールする場合は、ASP.NET Core ランタイムをインストールすることをお勧めします。これには .NET と ASP.NET の Core ランタイムの両方が含まれているため
アンインストールツール
CLIコマンド
SDKコマンド
コマンド | 内容 |
---|---|
dotnet --info | .NET Core 情報の表示 |
パッケージの追加
dotnet add package Microsoft.Extensions.Configuration.Binder --version 5.0.0 dotnet add package Microsoft.Extensions.Configuration.CommandLine --version 5.0.0 dotnet add package Microsoft.Extensions.Configuration.Json --version 5.0.0 dotnet add package Microsoft.Extensions.DependencyInjection --version 5.0.1 dotnet add package Microsoft.Extensions.Hosting --version 5.0.0 dotnet add package Microsoft.Extensions.Options --version 5.0.0 dotnet add package MongoDB.Driver --version 2.12.4 dotnet add package Newtonsoft.Json.Bson --version 1.0.2 dotnet add package Newtonsoft.Json --version 13.0.1 dotnet add package Microsoft.Extensions.Logging.Log4Net.AspNetCore --version 5.0.3
Windows Proxy設定について
- 一時的に環境変数にプロキシを設定して対応
- set HTTP_PROXY=http:(ユーザーID):(パスワード)@(プロキシ):(ポート番号)
- set HTTPS_PROXY=http:(ユーザーID):(パスワード)@(プロキシ):(ポート番号)
> netsh winhttp show proxy > netsh winhttp import proxy source=ie
.gitignoreの作成
$ dotnet new gitignore
プロジェクトレンプレート
dotnet new
$ dotnet new web
- 一覧表示
$ dotnet new --list これらのテンプレートは、入力: と一致しました テンプレート名 短い名前 言語 タグ --------------------------------- -------------- ---------- -------------------------- 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-Vi... 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 dotnet gitignore ファイル gitignore Config dotnet ローカル ツール マニフ... tool-manifest Config EditorConfig ファイル editorconfig Config global.json ファイル 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 Web 構成 webconfig Config Worker Service worker [C#],F# Common/Worker/Web xUnit Test Project xunit [C#],F#,VB Test/xUnit クラス ライブラリ classlib [C#],F#,VB Common/Library コンソール アプリ console [C#],F#,VB Common/Console ソリューション ファイル sln Solution
ソリューション
- カレントディレクトリにソリューションファイルを作成
$ dotnet new sln -o .
- カレントディレクトリのソリューションにプロジェクトを追加
$ dotnet sln add {プロジェクトファイルパス}
- ビルド
$ dotnet clean $ dotnet build
NET での依存関係の挿入
サービスの有効期間
意味 | 名称 | 内容 |
---|---|---|
一時的 | AddTransient | 有効期間が一時的なサービスは、サービス コンテナーから要求されるたびに作成されます。 この有効期間は、軽量でステートレスのサービスに最適です |
スコープ | AddScoped | Web アプリケーションの場合、スコープ付き有効期間は、クライアント要求 (接続) ごとにサービスが 1 回作成されることを示します |
シングルトン | AddSingleton | シングルトン有効期間サービスが作成されるのは、次のいずれかの場合です。
|
サービス登録メソッド
メソッド | 例 | 自動object破棄 | 複数実装 | 引数を渡す |
---|---|---|---|---|
Add{LIFETIME}<{SERVICE}, {IMPLEMENTATION}>() | services.AddSingleton<IMyDep, MyDep>(); | Y | Y | N |
Add{LIFETIME}<{SERVICE}>(sp => new {IMPLEMENTATION}) | services.AddSingleton<IMyDep>(sp => new MyDep());
services.AddSingleton<IMyDep>(sp => new MyDep(99)); |
Y | Y | Y |
Add{LIFETIME}<{IMPLEMENTATION}>() | services.AddSingleton<MyDep>(); | Y | N | N |
AddSingleton<{SERVICE}>(new {IMPLEMENTATION}) | services.AddSingleton<IMyDep>(new MyDep());
services.AddSingleton<IMyDep>(new MyDep(99)); |
N | Y | Y |
AddSingleton(new {IMPLEMENTATION}) | services.AddSingleton(new MyDep());
services.AddSingleton(new MyDep(99)); |
N | N | Y |
Cannot consume scoped service from singleton
- 既定では、開発環境で、より長い有効期間を持つ別のサービスからサービスを解決すると、例外がスローされます。
- スコープの検証
- シングルトンからスコープ付きサービスを解決 しない でください。また、たとえば一時的なサービスにより、間接的に解決しないようにご注意ください
コンソールアプリケーションでDIからサービスを取得
return Host.CreateDefaultBuilder (args) .ConfigureServices ((hostContext, services) => { services.AddSingleton<ServiceProvider>(services.BuildServiceProvider()); });
- ServiceProvider をコンストラクタインジェクション
- 利用時
_serviceProvider.GetService<IHoge>()
exe を出力
デプロイ方法の名称 | 略称 | 実行方法 |
---|---|---|
Framework-dependent deployments | FDD | コマンドで dotnet hoge.dll として実行する |
Self-contained deployments | SCD | 実行ファイルを直接実行する |
日本語コーデック
- NuGet で System.Text.Encoding.CodePages を追加
- 初期化時に 以下を実行
Console
コマンドライン オプションの解析
- https://docs.microsoft.com/ja-jp/archive/msdn-magazine/2019/march/net-parse-the-command-line-with-system-commandline
- https://blog.yucchiy.com/2021/03/intro-system-commandline/
- https://qiita.com/TsuyoshiUshio@github/items/02902f4f46f0aa37e4b1
- System.ConmmandLineは.NETでコンソールアプリケーション(CLI)を作るための.NET公式のライブラリ
dotnet add package System.CommandLine --version 2.0.0-beta3.22111.2
using System; using System.CommandLine; using System.CommandLine.Invocation; using System.IO; using System.Reflection; public class Program { static int Main(string[] args) { var converterOption = new Argument<string>("converter", "Converter Name"); var infoOption = new Option<bool>(new string[] { "-i", "--info" }, "information"); var rootCommand = new RootCommand { converterOption, infoOption }; rootCommand.Description = "Convert"; rootCommand.SetHandler((string converter, bool info) => { Console.WriteLine($"{converter} {info}"); }, converterOption, infoOption); return rootCommand.Invoke(args); } }
Description: Convert hogehoge <converter> [options] Arguments: <converter> Converter Name Options: -i, --info information --version Show version information -?, -h, --help Show help and usage information > dotnet run "conv" conv False
設定ファイル
dotnet add package Microsoft.Extensions.Configuration.Json --version 5.0.0
using System; using System.IO; using Microsoft.Extensions.Configuration; namespace docweb_bat { public class Program { static void Main(string[] args) { // export DECWEB_ENV=Development var environmentName = Environment.GetEnvironmentVariable("DOCWEB_ENV"); Console.WriteLine($"Environment:{environmentName}"); IConfiguration configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", true, true) .AddJsonFile($"appsettings.{environmentName}.json", true, true) .Build(); IConfigurationSection section = configuration.GetSection("DocumentWebDatabaseSettings"); string str = section["DocumentWebCollectionName"]; Console.WriteLine(str); } } }
© 2006 矢木浩人