앞으로이 문제가 발생할 때 참조로이 인용 된 텍스트를 추가하고 싶었습니다. 업그레이드 를 호출하여 이전 버전의 설정을 복사하도록 ApplicationSettings 인프라에 지시 할 수 있습니다 .
Properties.Settings.Value.Upgrade();
에서 클라이언트 설정 자주 묻는 질문 블로그 게시물 : ( 아카이브 )
Q : user.config 경로에 버전 번호가있는 이유는 무엇입니까? 내 애플리케이션의 새 버전을 배포하면 사용자가 이전 버전에서 저장 한 모든 설정을 잃지 않습니까?
A : user.config 경로가 버전을 구분하는 데에는 몇 가지 이유가 있습니다.
(1) 여러 버전의 애플리케이션을 나란히 배포 할 수 있도록 지원합니다 (예 : Clickonce를 사용하여이 작업을 수행 할 수 있음). 다른 버전의 응용 프로그램에서 다른 설정을 저장할 수 있습니다.
(2) 응용 프로그램을 업그레이드 할 때 설정 클래스가 변경되어 저장된 항목과 호환되지 않아 문제가 발생할 수 있습니다.
그러나 이전 버전의 응용 프로그램에서 최신 버전으로 설정을 쉽게 업그레이드 할 수 있도록했습니다. ApplicationSettingsBase.Upgrade ()를 호출하기 만하면
현재 버전의 클래스와 일치하는 이전 버전의 설정을 검색하여 현재 버전의 user.config 파일에 저장합니다. 설정 클래스 또는 공급자 구현에서이 동작을 재정의하는 옵션도 있습니다.
Q : 좋습니다.하지만 언제 업그레이드에 전화해야하는지 어떻게 알 수 있습니까?
A : 좋은 질문입니다. Clickonce에서 애플리케이션의 새 버전을 설치하면 ApplicationSettingsBase가이를 감지하고 설정이로드 될 때 자동으로 업그레이드 설정을 업그레이드합니다. Clickonce가 아닌 경우에는 자동 업그레이드가 없습니다. Upgrade를 직접 호출해야합니다. 다음은 업그레이드 호출시기를 결정하는 한 가지 아이디어입니다.
CallUpgrade라는 부울 설정을 가지고 기본값을 true로 지정하십시오. 앱이 시작되면 다음과 같이 할 수 있습니다.
if (Properties.Settings.Value.CallUpgrade)
{
Properties.Settings.Value.Upgrade();
Properties.Settings.Value.CallUpgrade = false;
}
이렇게하면 새 버전이 배포 된 후 응용 프로그램이 처음 실행될 때만 Upgrade ()가 호출됩니다.
나는 그것이 실제로 작동 할 수 있다고 잠시 믿지 않는다. 마이크로 소프트가이 기능을 제공 할 방법은 없지만 방법은 똑같다.