2009-08-04 3 views
7

Visual Studio 2008에서 프로젝트를 디버깅 할 때 Settings.settings 파일이 빌드간에 계속 재설정됩니다. 이런 일이 발생하지 않도록하는 방법이 있습니까?Settings.settings 파일 재설정 유지

감사합니다.

답변

12

좋아, 나는 정말로 내가 찾고있는 대답을 발견했다. 기본적으로 LocalFileSettingsProvider.Upgrade를 호출해야합니다. 그러나 ClickOnce를 사용하여 배포 할 것이므로 자동으로 수행됩니다.


질문 :하지만 업그레이드를 언제 어떻게 호출해야하는지 알 수 있습니까?

답 : 좋은 질문입니다. Clickonce에서 응용 프로그램의 새 버전을 설치하면 ApplicationSettingsBase가이를 감지하고 설정이로드 된 시점에 자동으로 설정을 업그레이드합니다. Clickonce 이외의 경우에는 자동 업그레이드가 없습니다. 직접 업그레이드를 호출해야합니다. 다음은 업그레이드를 호출 할시기를 결정하는 한 가지 아이디어입니다.

CallUpgrade라는 부울 설정이 있고 기본값 인 true를 지정합니다.()이 업그레이드를 보장합니다

if (Properties.Settings.Value.CallUpgrade) 
{ 
    Properties.Settings.Value.Upgrade(); 
    Properties.Settings.Value.CallUpgrade = false; 
} 

이 새 버전이 배포 된 후 응용 프로그램이 실행되는 첫 번째 시간이라고 : 앱이 시작되면, 당신은 뭔가를 할 수 있습니다.

REF : http://blogs.msdn.com/rprabhu/articles/433979.aspx

0

내 머리 꼭대기에서 프로젝트를 만들거나 실행할 때 파일의 속성 (Visual Studio에서 마우스 오른쪽 버튼을 클릭하고 속성)에서 "복사하지 마십시오"옵션을 설정할 수 있다고 생각합니다. 아마도 프로젝트가 빌드되고 설정 파일이 debug bin 디렉토리에 복사되어 이전 실행에서 설정 파일을 덮어 쓰는 경우 일 수 있습니다.

+1

방금 ​​옵션을 확인했으며 이미 "복사 안 함"으로 설정되어 있습니다. – Lenard

2

기본적으로 Settings.settings 파일은 현재 버전 번호에 따라 기본적으로 "기능"으로 저장됩니다. 설정은 컴퓨터의 동일한 프로그램의 다른 버전간에 저장되지 않습니다. 컴파일 할 때 (AssemblyInfo.cs의 1.0. *) 버전 번호가 자동으로 증가한다고 가정하면 새 버전을 컴파일 할 때마다 설정이 재설정됩니다.

이 문제를 해결하려면 응용 프로그램 데이터 디렉터리에 사용자 고유의 설정 파일을 직렬화하는 것이 가장 좋습니다.

+1

이것이 Microsoft의 기능으로 간주 될지 확실하지 않습니다. Microsoft가 소프트웨어를 업데이트 할 때마다 모든 불만 사항이 있다고 상상할 수 있습니까? 왜 그들은 "우리"개발자들과 다를 것이라고 생각합니까? :) 답장을 보내 주셔서 감사합니다! – Lenard

+0

버전 번호를 수동으로 업데이트해도 문제가되지 않습니다. 최종 결과는 사용자가 소프트웨어의 버전 1.0, 1.5, 1.7 및 2.0을 설치할 수 있으며 각각 고유 한 설정이 저장된다는 것입니다. 이 4 가지 응용 프로그램간에 설정을 공유하려면 공유 위치에 자신의 설정 파일을 저장해야합니다. –

+0

MS에서 제공하는 응용 프로그램 설정 기능의 동작이 마음에 들지 않았습니다. 부끄러운 점은 거기에 프레임 워크가 많이있는 것 같지만, 제 자신을 요리하는 것이 더 쉽다는 것을 알았습니다. – AaronLS

0

다른 이유의 사이에, 설정 파일 유지 점점 간단하게 다음 번에 디버그, 당신은 다시 한번 전체 응용 프로그램을 테스트 할 수 있습니다 때문에 디버그 할 때마다 다시 설정합니다. 설정을 재설정하지 않으면 감지되지 않은 버그가 발생할 수 있습니다.

관련 문제