.net 설정 파일에 대한 많은 게시물이 있지만, 필자는 요구 사항이 제안 된 솔루션을 허용하지 않는다고 생각합니다. 그렇지 않으면 프로세스가 저에게 맞는지 알 수 없습니다..NET 구성 파일 (app.config, settings.settings)을 사용하여 모든 응용 프로그램 데이터를 저장하고 복원하는 방법?
상황에 따라 특정 사용자 입력 필드 (예 : IP 주소)뿐만 아니라 양식 속성 (창 크기 등)을 응용 프로그램 설정에 바인딩하는 Windows Forms 응용 프로그램 (다른 응용 프로그램 일 수도 있음)이 있습니다 속성 -> 설정 영역). 알 수 있듯이이 설정은 내 프로젝트의 app.config 파일에 표시된 설정과 동일하므로 System.Configuration.ConfigurationManager 클래스를 사용하여 해당 설정을 조작 할 수 있어야합니다.
내가하고 싶은 일은 사용자가 저장된 설정을 모두 내보내고 가져올 수있게하려는 것입니다. 일부 사용자 지정 개체의 직렬화 또는 INI 파일 작업보다는 응용 프로그램에서 사용하는 구성 파일을 저장하고 바꾸는 것이 더 쉽다고 생각했습니다.
그것은 지정된 파일에 현재 설정을 저장하기 위해 상대적으로 쉽다 : 현재 설정을 덮어 쓰기 설정 파일을 복원
그러나internal static void Export(string settingsFilePath)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
config.SaveAs(settingsFilePath);
}
이 어려운 증명한다. 내가 그렇게
var newConfig = ConfigurationManager.OpenExeConfiguration(settingsFilePath)
같은 구성 파일을 열 수 있지만 완전히 가져온 파일의 사람들과 현재 설정에서 모든 설정을 교체하는 방법을 볼 수없는 것
보인다.
[편집 :이 오버로드는 .config 파일이 아닌 .exe 경로를 수신해야합니다. 이 방법으로 exe 파일을 열면 호출 코드가 구성 파일의 동일한 어셈블리를 참조하지 않을 경우 ConfigurationErrorsException이 발생합니다.]
아마도 other posts에 설명 된 방법을 사용하면 설정이 아니라 모든 것이 있지만,이 시점에서 어떻게 작동하는지 보지 못합니다.
아이디어가 있으십니까? 올바른 길을 가고 있습니까, 아니면 그냥 INI 파일 (또는 다른 것)을 사용해야합니까?
전체 파일을 조작하지 않는 것이 옳은 것 같습니다. 적어도 메모리에 관심이 있다고 생각되는 "appSettings"섹션보다 많은 섹션이 있습니다. 내 말은, 시도해보십시오 var currentConfig = ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.PerUserRoamingAndLocal); currentConfig.Dump(); in LINQPad. – Pat
변경하고자하는 "appSettings"값이 아니라 "userSettings"값이라는 것을 발견했습니다. 특히 자식 노드 인입니다. –
Pat