.NET 4.7.1を対象とするコンソールアプリがあります。 .Net Frameworkアプリで.netコアを構成のように使用しようとしています。私の `App.configは:
<configuration>
<configSections>
<section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="SimpleJson"
jsonFile="config.json"
optional="false"
jsonMode="Sectional"
type="Microsoft.Configuration.ConfigurationBuilders.SimpleJsonConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Json, Version=1.0.0.0, Culture=neutral" /></builders>
</configBuilders>
そして、「常にコピー」プロパティがTrue
に設定されたファイルconfig.json
があります。 config.json
は次のようになります:
{
"appSettings": {
"setting1": "value1",
"setting2": "value2",
"complex": {
"setting1": "complex:value1",
"setting2": "complex:value2"
}
},
"connectionStrings": {
"mySpecialConnectionString": "Dont_check_connection_information_into_source_control"
}
}
次に、main
メソッドで、次のような構成値を読み取ろうとします。
var config = ConfigurationManager.AppSettings
ただし、config
の値は常にnullです。私は以下を試しました:
jsonFile
を~/config.json
に変更してみました。jsonMode
をフラットのデフォルト値に設定するときに、非常に基本的なKey-Value(フラット)json設定を指定しようとしました。しかし、設定を機能させることができません。この問題を解決するにはどうすればよいですか?
私もこれを少し前に行いましたが、それは単なるワンライナーではありませんでした。 Microsoft Nugetパッケージを使用できますMicrosoft.Extensions.Configuration
&Microsoft.Extensions.Configuration.Json
と独自のConfigurationBuilderをセットアップします。
この記事 を見てください、あなたはそれを乗り越えるべきだと思います。
<appSettings configBuilders="SimpleJson">
これは私のために働くコードです:
<configBuilders>
<builders>
<add name="SimpleJson" jsonFile="~\developer_config.json" optional="false" jsonMode="Sectional" type="Microsoft.Configuration.ConfigurationBuilders.SimpleJsonConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Json, Version=1.0.0.0, Culture=neutral" />
</builders>
</configBuilders>
<appSettings configBuilders="SimpleJson">
...
</appSettings>
ソースコード の例を見てください
あなたはあなたの設定ファイルセクションに追加する必要があります
<appSettings configBuilders="SimpleJson">
<add key="AppConfiguration:Key1" value="will be replaced by value in json file" />
</appSettings>
そして、jsonMode = "Sectional"属性を削除します。
あなたはあなたの価値にアクセスすることができます
var key1 = ConfigurationManager.AppSettings["AppConfiguration:Key1"];