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

MyMemoWiki

「.NET Core」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
108行目: 108行目:
 
!引数を渡す
 
!引数を渡す
 
|-
 
|-
|
+
|Add{LIFETIME}<{SERVICE}, {IMPLEMENTATION}>()
|
+
|services.AddSingleton<IMyDep, MyDep>();
|
+
|Y
|
+
|Y
|
+
|N
 
|-
 
|-
|
+
|Add{LIFETIME}<{SERVICE}>(sp => new {IMPLEMENTATION})
|
+
|<pre>services.AddSingleton<IMyDep>(sp => new MyDep());
|
+
services.AddSingleton<IMyDep>(sp => new MyDep(99));</pre>
|
+
|Y
|
+
|Y
 +
|Y
 
|-
 
|-
 
|
 
|
145行目: 146行目:
 
|-
 
|-
 
|}
 
|}
 
 
 
  
 
====Cannot consume scoped service from singleton====
 
====Cannot consume scoped service from singleton====

2021年8月10日 (火) 01:18時点における版

| 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


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

.gitignoreの作成


$ dotnet new gitignore

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

dotnet new


$ dotnet new web

=ソリューション


  • カレントディレクトリにソリューションファイルを作成
$ dotnet new sln -o .
  • カレントディレクトリのソリューションにプロジェクトを追加
$ dotnet sln add {プロジェクトファイルパス}
  • ビルド
$ dotnet clean
$ dotnet build

NET での依存関係の挿入


サービスの有効期間


サービス登録メソッド


メソッド 自動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

Cannot consume scoped service from singleton

  • 既定では、開発環境で、より長い有効期間を持つ別のサービスからサービスを解決すると、例外がスローされます。
  • スコープの検証
  • シングルトンからスコープ付きサービスを解決 しない でください。また、たとえば一時的なサービスにより、間接的に解決しないようにご注意ください

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

設定ファイル

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);
        }
    }
}