Programming/C#

C# Properties.Settings.Default의 설정 값은 어디에 저장이 될까? (app.config 관리)

JeongKyun 2022. 1. 6.

서론

나는 여지껏 App.config에 값을 관리할때 Properties.Settings.Default.Save()를 하면 app.config에 적용이 되어 값이 관리되는줄로알고 해당 문법을 사용해왔었다. 그런데 !! 최근에 config에 값을 수정한 후에 해당 .exe파일과 .config파일을 다른 곳에 옮겨서 사용해보니 수정한 값이 없어지고 처음 설정한 초기 기본값으로만 잡혀있는 것이였다. 당황감속에 config파일을 열어봤다. 실행경로에 있는 config에 수정한 값들이 하나도 적용이 안되어 있는 것을 마주했다.. 난 당연히 Save()하고 난 뒤에 프로그램을 껐다켜도 저장이 되어있기에 app.config에 저장이 되어 관리가 되고있겠지란 생각을 하고 사용해왔는데 너무 당황스러웠다. 이것을 어떻게 된건지 한번 확인해보자!

 

해당 설정한 config의 값이 어디로 사라진 걸까??

 

답을 한번 같이 알아보자 !

 


 

수정한 값이 들어있는 Config 파일 찾기 

별거 없다. 파일탐색기에서 %userprofile%\appdata\local 경로에 들어가여 작업한 프로그램 폴더에 들어가 쭉 타고 들어가보면 수정한 config 파일들이 저장되어있는 것을 확인할 수 있을 것이다.

 

아래의 이미지를 참고하여 수정한 Config의 파일을 찾아보자

 

1. 경로에 들어가서 작업 프로그램을 들어가면 나오는 폴더 구조

위와 같이 exe 뒤에 붙어서 나오게 되는데 이 안을 들어가면 뭐가 있을까?

 

user라는 메모장을 눌렀을 때 나오는 내용

 

두둥 바로 내가 값을 변경하고 Properties.Settings.Default.Save() 했던 값들이 위의 user 메모장에 저장이 될 때마다 새로운 메모장으로 관리가 되고있었던 것이였다 ! 왜 지금까지 config의 값들이 안변하는지 확인을 안했을까란 생각에 회의감이 든다. 해당 내용 찾다보니 나처럼 왜 app.config에 적용이 안되어있는지 의문을 갖는사람들이 국내부터 외국까지 꽤 있는거 같았는데 이 글을 보고 많이 참고하였으면 좋겠다.

 


 

해당 경로를 가져오는 C# 소스

※ 해당 경로를 프로그래밍 방식으로도 얻어올 수 있는데 그 소스는 아래와 같다.

//Configuration 참조 추가
using System.Configuration;  

//config의 경로 얻어오기
var path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;

 

해당 경로를 이용해서 메모장의 내용을 가져올 수 도 있고 만약 프로그래밍 방식이 아닌 그냥 원하는 일자의 폴더에 들어가서 해당 user의 파일을 config의 내용에 붙여넣어서 쓰면 된다.

반응형

댓글

💲 많이 본 글