App.config : 사용자 대 애플리케이션 범위


91

내 프로젝트에 App.config 파일을 추가했습니다. 프로젝트> 속성> 설정 패널에서 두 가지 설정을 만들었습니다.

여기에 이미지 설명 입력

설정을 추가 할 때 범위를 User또는 로 정의 할 수 있습니다 Application. -

  1. 사용자
  2. 신청

I는 다음과 같이 설정 정의하는 경우 User가 간다 userSettings, 섹션
내가 설정을 정의하는 경우로 Application이가는 applicationSettings부분

App.config

<configuration>

    <userSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting1" serializeAs="String">
                <value>Value1</value>
            </setting>
        </DemoApp.Properties.Settings>
    </userSettings>

    <applicationSettings>
        <DemoApp.Properties.Settings>
            <setting name="MySetting2" serializeAs="String">
                <value>Value2</value>
            </setting>
        </DemoApp.Properties.Settings>
    </applicationSettings>

</configuration>

그러나, 이러한 설정에서 같은 방법으로 액세스 할 수 있습니다 .cs-

암호

string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1;
string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2;

UserApplication범위 의 차이점은 무엇이며 어떤 상황에서이 둘 중에서 선택해야합니까?

답변:


72

기본적으로 프로그램 실행 중에는 응용 프로그램 설정을 변경할 수 없으며 사용자 설정은 변경할 수 있습니다. 그런 다음 이러한 사용자 설정을 저장하여 사용자가 다음에 응용 프로그램을 실행할 때 익숙한 경험을 제공해야합니다.

편집 : 예를 들어 다른 모듈로 애플리케이션을 작성할 수 있으며 기본 모듈이 올바른 버전의 보안 모듈을 사용하고 있는지 확인해야합니다. 이를 위해 애플리케이션 범위 설정을 설정합니다. 예 :

SecurityModuleVersion  string     Application      v1.21

당신은 보안 모듈을 리팩토링 할 때 얼마 후, 당신은 당신이 올바른 보안이 구현 될 수 있도록 배포 할 때 V1.22에 값이 변경 될 수 있습니다

반면에 응용 프로그램에 색상 변경, 글꼴 변경 등의 다른 '스킨'이있는 경우 다음과 같은 사용자 설정을 설정할 수 있습니다.

ApplicationSkin        string     User              DefaultSkin

그런 다음 Michelle이 선호하는 스킨으로 변경하면 응용 프로그램이 자신의 설정을 기억 합니다 . 이제 속성은 다음과 같습니다.

ApplicationSkin        string     User              HelloKittySkin

예를 사용하여 설명 할 수 있습니까?
Parag Meshram 2013

1
기본 설정은 구성 파일에 있습니다. 예? 그러나 저장된 사용자 설정은 어디에 저장됩니까?
Kyle Delaney

7
앱 설정은 * .exe.config 파일에 저장됩니다. 사용자 설정은 c : \ users \ <userid> \ AppData \ Local \ <companyname> \ <appname> \ <version> \ user.config (나중에 어셈블리 파일에서 가져옴)에 저장됩니다. 로드시 사용자 설정이 앱 설정보다 우선합니다.
Schrodo_Baggins

71

응용 프로그램 범위 설정은 읽기 전용이며 디자인 타임에 또는 응용 프로그램 세션간에 .exe.config 파일을 변경하여 변경할 수 있습니다. 그러나 사용자 범위 설정은 속성 값을 변경하는 것처럼 런타임에 쓸 수 있습니다. 새 값은 응용 프로그램 세션 기간 동안 유지됩니다. Settings.Save 메서드를 호출하여 응용 프로그램 세션간에 사용자 설정 변경 사항을 유지할 수 있습니다.

msdn의 소스 : C #에서 설정 사용

사용자 설정은 일반적으로 사용자 기본 설정을 유지하는 데 사용됩니다 (예 : 앱 알림 기본 설정 등). 애플리케이션 설정은 일반적으로 API 키 등과 같은 항목에 적용됩니다.

@kmote에서 언급했듯이 사용자 설정이 런타임에 수정되고 유지되면 (을 통해 settings.Save()) 사용자 프로필 저장소 내의 폴더 (일반적으로 Windows 7 이상에서는 C : \ Users \ Username \ AppData \ Local \ AppName)에 기록 됩니다. ). 프로그래밍 방식으로 파일의 위치를 ​​확인하려면 이 게시물을 참조하십시오 .


어떤 라이브 예라도 대단히 감사하겠습니다
Parag Meshram 2013

1
또한 세션간에 .config 파일을 편집하여 사용자 설정을 변경할 수 없다는 점에 유의해야합니다.
kmote

@kmote 물론 가능합니다! 세션이 닫히면 구성 (따라서 userSetting)을 변경할 수 있습니다. 세션을 다시 시작할 때 변경 사항이 유지되고 프로그램에 반영됩니다. 방금 테스트했습니다.
Riegardt 스테인

5
@Heliac : 나는 더 정확해야했다. userSettings는 세션간에 변경할 수 있다는 것이 맞습니다. 그러나 프로그래밍 방식으로 (를 사용하여 Settings.Save()) 변경 하면 구성 파일이 생성되고 C : \ Users [사용자 이름] \ AppData \ Local \ Microsoft에 숨겨집니다. 이 시점부터 응용 프로그램이 시작될 때마다 사용자 설정은 해당 파일에서 독점적으로 가져 오며 App.config 또는 Settings.settings에서 수동으로 변경 한 사항은 무시됩니다.
kmote

이 사용자 구성 파일의 내용을 찾고 볼 수있는 방법이 있습니까?
Kyle Delaney
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.