この記事では、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 メソッドを設定する必要があります。そうしないと、次のエラーが報告されます:
// // 摘要: // 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 サイトの他の関連記事を参照してください。