問題があります。次のようにapp.configを使用する.Net Core(C#)でプログラムを作成する必要があります。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="custom" type="ConfigurationSample.CustomConfigurationSection, ConfigurationSample"/>
</configSections>
<connectionStrings>
<add name="sampleDatabase" connectionString="Data Source=localhost\SQLExpress;Initial Catalog=SampleDatabase;Integrated Security=True"/>
</connectionStrings>
<appSettings>
<add key="sampleApplication" value="Configuration Sample"/>
</appSettings>
<custom>
<customConfigurations>
<add key="customSample" name="Mickey Mouse" age="83"/>
</customConfigurations>
</custom>
</configuration>
そして私は書きます:
string connectionString = ConfigurationManager.ConnectionStrings["sampleDatabase"].ConnectionString;
Console.WriteLine(connectionString);
// read appSettings configuration
string appSettingValue = ConfigurationManager.AppSettings["sampleApplication"];
Console.WriteLine(appSettingValue);
そして、それはインターネットからの例ですので、私はうまくいくと思いましたが、例外が発生しています:
System.Configuration.ConfigurationErrorsException: 'Error Initializing the configuration system.'
Inner Exception
TypeLoadException: Could not load type 'System.Configuration.InternalConfigurationHost' from Assembly 'CoreCompat.System.Configuration, Version=4.2.3.0, Culture=neutral, PublicKeyToken=null' because the method 'get_bundled_machine_config' has no implementation (no RVA).
NuGet-Install-Package CoreCompat.System.Configuration -Version 4.2.3-r4 -Preを使用してダウンロードしたが、まだ動作しません。たぶん誰かが私を助けることができますか?
ASP.NET Coreアプリだけでなく、 Configuration API withany.NET Coreアプリを使用できます。コンソールアプリで設定を読み取る方法を示すリンクで提供されているサンプルを見てください。
ほとんどの場合、JSONソース(.json
ファイルとして読み取られる)が最適な構成ソースです。
注:構成ファイルは
appsettings.json
である必要があると誰かが言っても混乱しないでください。自分に適した任意のファイル名を使用でき、ファイルの場所は異なる場合があります-特定のルールはありません。
しかし、現実の世界は複雑なので、多くの異なる構成プロバイダーがあります。
等々。カスタムプロバイダーを使用/作成することもできます。
実際、app.config
構成ファイルはXMLファイルでした。したがって、XML構成プロバイダー( githubのソース 、 nugetリンク )を使用して、そこから設定を読み取ることができます。ただし、構成ソースとしてのみ使用されることに注意してください-アプリの動作をロジックで実装する必要があります。構成プロバイダーは、アプリの「設定」やポリシーを変更せず、ファイルからデータを読み取ります。
Linuxの.NET Core 2.0でも、通常のSystem.Configuration
を使用できます。このテスト例を試してください:
MyLib.dll
)System.Configuration.ConfigurationManager
v4.4.0を追加しました。このパッケージはメタパッケージNetStandard.Library
v2.0.0でカバーされていないため、これが必要です(変更されることを望みます)ConfigurationSection
またはConfigurationElement
から派生したすべてのC#クラスは、MyLib.dll
に入ります。たとえば、MyClass.cs
はConfigurationSection
から派生し、MyAccount.cs
はConfigurationElement
から派生します。実装の詳細はここでは範囲外ですが、 Googleはあなたの友達ですMyApp.dll
など)を作成します。 .NET Coreアプリは、Frameworkで.dll
ではなく.exe
で終わります。MyApp
にapp.config
を作成します。これは明らかに上記の#3のクラス設計と一致するはずです。例えば:<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="myCustomConfig" type="MyNamespace.MyClass, MyLib" />
</configSections>
<myCustomConfig>
<myAccount id="007" />
</myCustomConfig>
</configuration>
それだけです-app.configがMyApp
内で適切に解析され、MyLib
内の既存のコードが正常に機能することがわかります。プラットフォームをWindows(dev)からLinux(test)に切り替える場合は、dotnet restore
を実行することを忘れないでください。