設定ファイルの値にアクセスできません。
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value;
// the second line gets a NullReferenceException
.configファイル :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="ClientsFilePath" value="filepath"/>
<!-- ... -->
</appSettings>
</configuration>
あなたは私がすべきことについて何か提案がありますか?
これは私のために働く:
string value = System.Configuration.ConfigurationManager.AppSettings[key];
Dtsgが答えた答えは:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
ただし、 アセンブリ参照 を追加する必要があります。
システム構成
ソリューションエクスプローラー および Referencesで右クリック を選択し、 Add reference を選択します。 アセンブリ タブを選択し、 Configuration を検索します。
これがmy App.config の例です。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="AdminName" value="My Name"/>
<add key="AdminEMail" value="MyEMailAddress"/>
</appSettings>
</configuration>
これは次のようにして得られます。
string adminName = ConfigurationManager.AppSettings["AdminName"];
これを試してみてください。
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
設定から読み取る:
Configへの参照を追加する必要があります。
string value = Properties.Settings.Default.keyname;
設定に保存:
Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();
使ってます:
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
//configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
configMap.ExeConfigFilename = AppDomain.CurrentDomain.BaseDirectory + ServiceConstants.FILE_SETTING;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
value1 = System.Configuration.ConfigurationManager.AppSettings["NewKey0"];
value2 = config.AppSettings.Settings["NewKey0"].Value;
value3 = ConfigurationManager.AppSettings["NewKey0"];
value1 = ... および value3 = ... の場合はnull、 value2 = ... の場合
それから私は内部のapp.configを次のように置き換えることにしました。
// Note works in service but not in wpf
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"d:\test\justAConfigFile.config.whateverYouLikeExtension");
ConfigurationManager.RefreshSection("appSettings");
string value = ConfigurationManager.AppSettings["NewKey0"];
VS2012 .net 4を使用する
app/web.config
ファイルで、以下の構成を設定します。
<configuration>
<appSettings>
<add key="NameForTheKey" value="ValueForThisKey" />
...
...
</appSettings>
...
...
</configuration>
それで、あなたはこの行に入れることによってあなたのコードでこれにアクセスすることができます:
string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"];
*これは.net4.5.x
と.net4.6.x
に対してはうまくいくことに注意してください。 .net core
では動作しません。よろしく:ラファエル
久しぶりにこちらに戻る….
まだこの試みに対する答えを探している人のために、ConfigurationManagerの終焉を考えれば(例えば):
AppSettingsReader appsettingsreader = new AppSettingsReader();
string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));
もちろんSystem.Configurationが必要です。
(実際に動作し、読みやすくなるようにコードを編集しました)
Webアプリケーションの場合、私は通常このメソッドを書いてキーでそれを呼び出すだけです。
private String GetConfigValue(String key)
{
return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString();
}
_ imo _ これが私の考えです 2016年頃
<add key="ClientsFilePath" value="filepath"/>
System.Configuration
が参照されていることを確認してください。
質問は value appsettings//を求めている キー
最も確実にそうあるべきです(SHOULD)
string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"]
//yourKeyValue should hold on the HEAP "filepath"
これは、値をまとめることができるねじれです(この質問ではありません)。
var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"];
emails
はEnvironment Key + "_Emails"の値になります。
example : [email protected];[email protected];
明らかなことだと思ったことをしたのだ。
string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();
それはコンパイルしますが、常にnullを返します。
しかしこれは(上から)うまくいきます:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
ConfigurationManager.RefreshSection("appSettings")
string value = System.Configuration.ConfigurationManager.AppSettings[key];
コードは自動的に生成されます
<configuration> <configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup ..." ... > <section name="XX....Properties.Settings" type="System.Configuration.ClientSettingsSection ..." ... /> </sectionGroup> </configSections> <applicationSettings> <XX....Properties.Settings> <setting name="name" serializeAs="String"> <value>value</value> </setting> <setting name="name2" serializeAs="String"> <value>value2</value> </setting> </XX....Properties.Settings> </applicationSettings> </configuration>
値を取得する
Properties.Settings.Default.Name
OR
Properties.Settings.Default ["name"]
単純に入力することができます:
string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];
key
はオブジェクトで、AppSettings
は文字列をとるため
私のデスクトップアプリケーションに追加した設定ファイルに "App1.config"という名前が付けられていることに気付くまで、私の簡単なテストも失敗しました。私はそれを "App.config"に改名しました。