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

내 프로젝트에 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범위 의 차이점은 무엇이며 어떤 상황에서이 둘 중에서 선택해야합니까?



답변

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

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

SecurityModuleVersion  string     Application      v1.21

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

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

ApplicationSkin        string     User              DefaultSkin

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

ApplicationSkin        string     User              HelloKittySkin


답변

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

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

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

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


답변