| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「.NET Core」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
238行目: 238行目:
 
using System.CommandLine.Invocation;
 
using System.CommandLine.Invocation;
 
using System.IO;
 
using System.IO;
 +
using System.Reflection;
  
 
public class Program
 
public class Program
243行目: 244行目:
 
     static int Main(string[] args)
 
     static int Main(string[] args)
 
     {
 
     {
         RootCommand rootCommand = new RootCommand(
+
         var converterOption = new Argument<string>("converter", "Converter Name");
            description: "Simple");
+
        var infoOption = new Option<bool>(new string[] { "-i", "--info" }, "information");
 +
        var rootCommand = new RootCommand { converterOption, infoOption };
 +
        rootCommand.Description = "Convert";
  
         rootCommand.SetHandler(()=>{
+
         rootCommand.SetHandler((string converter, bool info) =>
             Console.WriteLine("TEST");
+
        {
         });      
+
             Console.WriteLine($"{converter} {info}");
 +
         }, converterOption, infoOption);
  
 
         return rootCommand.Invoke(args);
 
         return rootCommand.Invoke(args);
 
     }
 
     }
 
}
 
}
 +
</pre>
 +
 +
<pre>
 +
 +
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
 
</pre>
 
</pre>
  

2022年2月17日 (木) 12:36時点における版

| 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


アンインストールツール


CLIコマンド

SDKコマンド


コマンド 内容
dotnet --info .NET Core 情報の表示

パッケージの追加


  1. dotnet add package Microsoft.Extensions.Configuration.Binder --version 5.0.0
  2. dotnet add package Microsoft.Extensions.Configuration.CommandLine --version 5.0.0
  3. dotnet add package Microsoft.Extensions.Configuration.Json --version 5.0.0
  4. dotnet add package Microsoft.Extensions.DependencyInjection --version 5.0.1
  5. dotnet add package Microsoft.Extensions.Hosting --version 5.0.0
  6. dotnet add package Microsoft.Extensions.Options --version 5.0.0
  7. dotnet add package MongoDB.Driver --version 2.12.4
  8. dotnet add package Newtonsoft.Json.Bson --version 1.0.2
  9. dotnet add package Newtonsoft.Json --version 13.0.1
  10. 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の作成


  1. $ dotnet new gitignore

プロジェクトレンプレート

dotnet new


  1. $ dotnet new web

ソリューション


  • カレントディレクトリにソリューションファイルを作成
  1. $ dotnet new sln -o .
  • カレントディレクトリのソリューションにプロジェクトを追加
  1. $ dotnet sln add {プロジェクトファイルパス}
  • ビルド
  1. $ dotnet clean
  2. $ 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からサービスを取得

  1. return Host.CreateDefaultBuilder (args)
  2. .ConfigureServices ((hostContext, services) => {
  3. services.AddSingleton<ServiceProvider>(services.BuildServiceProvider());
  4. });
  • ServiceProvider をコンストラクタインジェクション
  • 利用時
  1. _serviceProvider.GetService<IHoge>()

exe を出力

デプロイ方法の名称 略称 実行方法
Framework-dependent deployments FDD コマンドで dotnet hoge.dll として実行する
Self-contained deployments SCD 実行ファイルを直接実行する

日本語コーデック

  • NuGet で System.Text.Encoding.CodePages を追加
  • 初期化時に 以下を実行
    • System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

Console

コマンドライン オプションの解析

  1. dotnet add package System.CommandLine --version 2.0.0-beta3.22111.2
  1. using System;
  2. using System.CommandLine;
  3. using System.CommandLine.Invocation;
  4. using System.IO;
  5. using System.Reflection;
  6.  
  7. public class Program
  8. {
  9. static int Main(string[] args)
  10. {
  11. var converterOption = new Argument<string>("converter", "Converter Name");
  12. var infoOption = new Option<bool>(new string[] { "-i", "--info" }, "information");
  13. var rootCommand = new RootCommand { converterOption, infoOption };
  14. rootCommand.Description = "Convert";
  15.  
  16. rootCommand.SetHandler((string converter, bool info) =>
  17. {
  18. Console.WriteLine($"{converter} {info}");
  19. }, converterOption, infoOption);
  20.  
  21. return rootCommand.Invoke(args);
  22. }
  23. }
  1.  
  2. Description:
  3. Convert
  4.  
  5. hogehoge <converter> [options]
  6.  
  7. Arguments:
  8. <converter> Converter Name
  9.  
  10. Options:
  11. -i, --info information
  12. --version Show version information
  13. -?, -h, --help Show help and usage information
  14.  
  15. > dotnet run "conv"
  16. conv False

設定ファイル

  1. dotnet add package Microsoft.Extensions.Configuration.Json --version 5.0.0
  1. using System;
  2. using System.IO;
  3. using Microsoft.Extensions.Configuration;
  4.  
  5. namespace docweb_bat
  6. {
  7. public class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. // export DECWEB_ENV=Development
  12. var environmentName = Environment.GetEnvironmentVariable("DOCWEB_ENV");
  13. Console.WriteLine($"Environment:{environmentName}");
  14. IConfiguration configuration = new ConfigurationBuilder()
  15. .SetBasePath(Directory.GetCurrentDirectory())
  16. .AddJsonFile("appsettings.json", true, true)
  17. .AddJsonFile($"appsettings.{environmentName}.json", true, true)
  18. .Build();
  19. IConfigurationSection section = configuration.GetSection("DocumentWebDatabaseSettings");
  20. string str = section["DocumentWebCollectionName"];
  21. Console.WriteLine(str);
  22. }
  23. }
  24. }