[C#] AppSettings는 .config 파일에서 가치를 얻습니다.

구성 파일의 값에 액세스 할 수 없습니다.

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"];

그러나 어셈블리 참조 를 추가해야 합니다.

시스템 설정

당신의 이동 솔루션 탐색기마우스 오른쪽 버튼으로 클릭 참고 문헌에 선택 추가 참조 . 어셈블리 탭을 선택하고 구성을 검색하십시오 .

레퍼런스 매니저

다음은 내 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"];


답변

구성에서 읽기 :

구성에 대한 참조를 추가해야합니다

  1. 프로젝트에서 “속성”을여십시오
  2. “설정”탭으로 이동
  3. “이름”과 “값”추가
  4. 다음 코드를 사용하여 가치를 얻으십시오.
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이 필요합니다.

(실제로 작동하고 읽기 쉬운 코드를 편집했습니다)