背景ストーリー
一般的にはASP.Net Core
、プロジェクトの設定を直接することができますappsetting.json
追加、プロジェクトに新しいプロファイルを追加することができます。しかし、あなたは普遍的なそれで設定ファイルやその他の項目を達成したい場合は?私たちは、コンフィギュレーションファイルにアクセスするための絶対位置を使用することができますが、問題にこのようなアクセスが発生する可能性があり、我々はまた、設定ファイルのアクセスインタフェースの開発を通じて達成、しかし、あまりにも面倒することができますが、私は変更に行ってきました設定を追加することができませんでしたアクセスコード一度。だから、何を公式プログラムにそれを提供するために、そこに木があるのでしょうか?
はい、Microsoft関係者が許可してASP.Net Core
、外部のアセンブリ機能を搭載、リアライズ・ロジックは、外部クラスによって達成されるIHostingStartup
アセンブリのアプリケーションに追加し、外部からの起動時にインターフェイスの強化。私たちがして前述した外部のプロジェクトのためのASP.Net Core
需要のプロファイルを追加し、それを達成する方法ですか?何もASP.Net Core
起動時に行われていない启动依赖程序集
クラスで指定された特性Configure
のメソッドを、その過程での共有設定にする必要がありますASP.Net Core
ランタイム。
基本的な流れ
外部ライブラリアセンブリ
- クラスライブラリプロジェクトを作成します
HostingStartupLibrary
。 - 開き、
Nuget
管理インターフェイスを、[インストール]をクリックしMicrosoft.AspNetCore.Hosting(2.2.7)
、Microsoft.Extensions.Configuration(3.0.0)
パッケージ。 新しいクラスベアラ
ServiceKeyInjection
、実装IHostingStartup
インタフェースConfigure
方法を、データ部は、メモリに追加されます。using System.Collections.Generic; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; [assembly: HostingStartup(typeof(HostingStartupLibrary.ServiceKeyInjection))] namespace HostingStartupLibrary { public class ServiceKeyInjection : IHostingStartup { var dict = new Dictionary<string, string>() { {"DevAccount_FromLibrary", "DEV_1111111-1111"} }; //配置方法一:主项目配置优先加载,再加载当前配置。 builder.ConfigureAppConfiguration(config => { config.AddInMemoryCollection(dict); }); //配置方法二:当前配置优先加载,再加载主项目配置。 //var builderConfig = new ConfigurationBuilder().AddInMemoryCollection(dict).Build(); //builder.UseConfiguration(builderConfig); } }
ASP.Netコアメインプロジェクト
- クラスライブラリプロジェクトに追加
HostingStartupLibrary
あなたが直接コンパイルされたクラスライブラリプロジェクトを参照することができますdllファイルを参照します。 - 設定の
主机启动依赖程序集
ホスト構成と構成環境変数:2つの可能な構成があります。両方のホストは設定と構成環境変数、ホスト構成制御の実際の使用が提供されている場合。- ホストの設定
- オープンは
Program.cs
、見つけるCreateHostBuilder
方法を。 - では
UseStartup<Startup>()
前に、webBuilder
添加した後UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "HostingStartupLibrary")
、HostingStartupLibrary
外部アセンブリの名前です。
- オープンは
- 環境変数の設定
- 開い
launchSettings.json
たファイルを、 - 全て検索
environmentVariables
添加におけるノードの下のノードASPNETCORE_HOSTINGSTARTUPASSEMBLIES
の値をHostingStartupLibrary
、すなわち外部のアセンブリ名。
- 開い
- ホストの設定
- configureは検査を受けます。
- コンストラクタ注入によって、
IConfiguration
コントローラへの注射。 config["DevAccount_FromLibrary"]
正しいか否かを、コンフィギュレーションデータ形式を取得します。
- コンストラクタ注入によって、