外部アセンブリを運ぶASP.Netコア

背景ストーリー

  一般的には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"]正しいか否かを、コンフィギュレーションデータ形式を取得します。

詳細な解釈

おすすめ

転載: www.cnblogs.com/fuxuyang/p/11819328.html