ホームページ > バックエンド開発 > C#.Net チュートリアル > ASP.NET Core クラス ライブラリ プロジェクトで構成ファイルを読み取る方法の詳細な説明

ASP.NET Core クラス ライブラリ プロジェクトで構成ファイルを読み取る方法の詳細な説明

黄舟
リリース: 2017-10-14 10:01:09
オリジナル
2873 人が閲覧しました

この記事では、ASP.NET Core クラス ライブラリ プロジェクトの構成ファイルの読み取り方法に関する関連情報を主に紹介します。これは、友人からの質問であり、サンプル コードを通じて詳しく紹介されています。あなたの研究のために、またはその作品には特定の参照と学習の価値があります。それを必要とする友人は、編集者をフォローして見ることができます。

はじめに

最近、友人が .net core クラス ライブラリの構成ファイルを読み取る方法を尋ねました。当時はよく言われていたことですが、私も知りませんでした。通常、アプリケーション ディレクトリに appsettings.json ファイルがあり、関連する設定はこの json ファイルに配置されます。ただし、クラス ライブラリを作成すると、この記事が表示されます。プロジェクトでは、ハードコーディングする必要があるキーやその他のデータなどの一部の構成については、JSON ファイルに配置されます。.net core が登場する前は、構成ファイルは web.config であり、ノード上のデータを読み取るための関連クラスがありました。これは .net core の json ファイルになっていますが、どうすればよいでしょうか?この記事が誕生しました。

.NET Core クラス ライブラリ プロジェクトは、JSON 構成ファイルを読み取ります

アプリケーション ディレクトリに JSON ファイルを追加すると、次のように構成されます:


var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .AddEnvironmentVariables();
    Configuration = builder.Build();
ログイン後にコピー

次に、次のように構成ファイルのノードを読み取ります:


public void ConfigureServices(IServiceCollection services)
  {

   services.Configure<BlogViewModel>(Configuration.GetSection("JeffckySettings"));
   ......
   }
ログイン後にコピー

ただし、プロジェクトがクラス ライブラリ内にある場合は、もちろんアプリケーションの下の appsettings.json に構成値を置くこともできますが、json ファイルが非常に肥大化するのを防ぐために、はクラス ライブラリにもあります。一元管理するには、構成データをクラス ライブラリに配置する必要があるため、クラス ライブラリに start.cs クラスを作成してからその構成をインスタンス化することはできません。このように考えることはできるはずですが、試したことはありません。以前のように web.config を読み取る方法はありませんか?キーを与えて値を取得しますか?つまり、強い型のコンフィグレーションによるコンフィグレーションデータの一元管理が目指すべき方向です。さて、ここまでは述べたので、始めましょう。まず、.net core でアプリケーション パスを取得する方法を確認しましょう。

.NET Coreはアプリケーションのパスを取得します

.NET 4より前の現在のアプリケーションのルートディレクトリのパスと名前を取得します。binディレクトリを取得する代わりにルートディレクトリを取得します


var basePath = AppDomain.CurrentDomain.BaseDirectory;
var appName = AppDomain.CurrentDomain.ApplicationIdentity.FullName;
ログイン後にコピー

取得する方がより簡潔です.net core の bin ディレクトリ パスは次のようになります。


Directory.GetCurrentDirectory()
ログイン後にコピー

.NET 4 より前 (.net core も同様):


AppContext.BaseDirectory
ログイン後にコピー

クラス ライブラリ プロジェクトでは、構成ファイル データを読み取るために強い型の構成を使用します。 まず、次の拡張機能をダウンロードする必要があります。 。


ConfigurationBuilder クラスで、次の Add メソッドを追加します:


Assembly.GetEntryAssembly().GetName().Name;
ログイン後にコピー

JSON ファイル名を追加するための AddJsonFile 拡張メソッドの場合、ファイル パスは SetBasePath() メソッドとすべての構成によって実装されています。これらは IConfigurationBuilder インターフェイスに基づいています。次のように実装される JsonConfigurationSource クラスがあります。


var name = typeof(T).GetTypeInfo().Assembly.GetName().Name;
ログイン後にコピー

その親クラスを見てみましょう。次のような JSON ファイル パスを追加するメソッドがあります。

ここから、JSON ファイルを追加する方法を確認できます。このメソッドは、拡張メソッドを介して実装することに加えて、次のように JsonConfigurationSource を直接インスタンス化することによって実装することもできます:

Assembly.GetEntryAssembly().GetName().Version.ToString()
ログイン後にコピー

上記のように JSON ファイルを追加できます。 JSON ファイルを追加するときは、JSON ファイルが配置されているディレクトリを設定する必要があることがわかりました。つまり、最初に SetBasePath メソッドを設定する必要があります。そうしないと、次のエラーが報告されます:


テスト JSON を作成します。ファイルを作成し、次のように現在のプロジェクト (StudyEFCore.Data) に配置します:


最後にクラス ライブラリ プロジェクトの JSON 構成ファイルを読み取り、カプセル化します。次のようになります:

//
  // 摘要:
  //  Adds a new configuration source.
  //
  // 参数:
  // source:
  //  The configuration source to add.
  //
  // 返回结果:
  //  The same Microsoft.Extensions.Configuration.IConfigurationBuilder.
  public IConfigurationBuilder Add(IConfigurationSource source);
ログイン後にコピー

からの未解決の問題があります上記は、現在のクラス ライブラリ プロジェクトのパスを取得する方法ですが、この記事を読んだ後、何か良い方法が思いつきませんでした。ショートコールは次のとおりです:


//
 // 摘要:
 //  Represents a JSON file as an Microsoft.Extensions.Configuration.IConfigurationSource.
 public class JsonConfigurationSource : FileConfigurationSource
 {
  public JsonConfigurationSource();

  //
  // 摘要:
  //  Builds the Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider
  //  for this source.
  //
  // 参数:
  // builder:
  //  The Microsoft.Extensions.Configuration.IConfigurationBuilder.
  //
  // 返回结果:
  //  A Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider
  public override IConfigurationProvider Build(IConfigurationBuilder builder);
 }
ログイン後にコピー

結果は次のとおりです:

我们将其类修改为ConfigurationManager,然后将其GetAppSettings方法定义为静态方法,最后如下调用是不是满足了在.net core之前读取web.config中配置数据的问题。哈哈哈:


var person = ConfigurationManager.GetAppSettings<Person>("JeffckySettings");
ログイン後にコピー

总结

以上がASP.NET Core クラス ライブラリ プロジェクトで構成ファイルを読み取る方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート