.NET 구성 설정 기능은 내가 원하는 것만 큼 융통성이 없습니다. Application Settings을 올바르게 이해하는 경우 설정을 변경/수정할 수있는 시점이 제한됩니다. C#에서는 응용 프로그램 설정이 두 가지 유형 또는 범위 ("응용 프로그램"및 "사용자")로 나뉘지만 둘 다 변경 또는 수정 방법에 대한 제한이 있습니다.C# 응용 프로그램 설정 편집/수정
SCOPE: | EDIT AT DESIGN-TIME: | EDIT AT RUN-TIME: | EDIT BETWEEN SESSIONS: --------------------------------------------------------------------------------------- User | Setings.settings | Settings.Default.Save() | *Not supported* Application | Setings.settings | *Not supported* | edit app.exe.config
나를 세 가지 메커니즘에 의해 설정을 편집 할 수있는 "기본"설정 기능이 있습니까 : 다음 표는 differnce를 보여줍니다? 구성 파일을 사용하는 주된 동기 중 하나는 사용자가 소스 코드를 다시 빌드하지 않고도 기본값을 변경할 수 있도록 허용하는 것입니다 (응용 프로그램 범위 설정과 함께 수행 할 수 있음). 그러나 사용자는 .config 파일을 편집해서는 안됩니다. 또한 실행 시간에 설정간에 지속되는 변경을 수행 할 수 있어야합니다 (사용자 범위 설정으로 수행 할 수 있음). 확실히 두 가지 기능을 모두 제공하는 메커니즘이 있어야합니다.
최하위 라인 : 왜 응용 프로그램 설정 (app.exe.config
)을 런타임에 편집 할 수 없습니까? 그것은 내 모든 문제를 해결할 것입니다. 동일한 컴퓨터를 공유하는 사용자에게 문제가 발생할 수 있음을 이해합니다. 그러나 누가 더 이상 그것을합니까?
잠재적 해결 방법 :는 숨겨 폴더에 사용자 설정 설정 파일의 기본 저장 위치를 변경하려면 어쨌든 있나요? (해명)
UPDATE : 무슨 말인지 것은 내가 런타임에서 디자인 타임에서 기본 설정을 변경할 수 있도록하려는 것입니다, 또는사이의 세션 (즉, 구성 파일 편집). 그러나 Settings.settings
에서 제공하는 기본 제공 C# 지속성 메커니즘을 사용할 때는 3 개 중 2 개를 선택해야합니다. 3 개가 누락 되었습니까? 내가 알지 못하는 다른 대안이 있습니까?
[사용 사례 : 내가 연결 문자열에 대한 "기본"데이터베이스 이름을 저장할하지만 사용자가 (런타임에 다른 데이터베이스를 지정할 수 있습니다함으로써 "새"를되고 싶다 해당 사용자의 기본값). 그렇지만, 나 또한 다시 실행하거나 응용 프로그램을 재 구축하지 않고 설정 파일의 기본을 오버하면 쓸 수 있으려면]
[를보다 효율적으로 사용 케이스 :. (의견에 대 한 응답에서)
모델의 매개 변수에 대한 기본값을 포함하는 구성 파일이있는 계산 모델이 있습니다. 사용자 A는 모델을 시작하고 여러 매개 변수의 값을 변경하기로 결정합니다. 이 변경 사항은 해당 사용자의 은이고 모든 사용자 세션은 (즉, RTunTime에서 편집)입니다. 그 사용자는 수정 된 구성 파일을 팀과 공유하려고합니다 (예 : 버전 관리 리포지토리 또는 전자 메일을 통해). 이렇게하면 사용자 B가 애플리케이션 (즉, 세션 간 편집)에서 수동으로 변경하지 않고도 사용자 A의 기본 매개 변수 값을 업데이트 할 수 있습니다. 이러한 모든 개조 작업은 디자인 타임 이후에 수행해야합니다.]
* 내가 실현이 내가 할 수있는 "기술적으로"편집 사용자 범위의 숨겨진의 AppData 폴더에있는 app.exe.config 파일의 설정, 그러나 이것은 숨겨진 파일이며, 모든 사용자가 충분한 권한을 가질 수있다 그것을 볼 수 있습니다. (위의 "잠재적 해결 방법"참조)
지식이 부족함에 따라 이러한 상황을 극복하지 못했습니다. 그러나 app.config를 사용하면 이름 값 쌍에 대한 설정을 정의 할 수 있으므로 그에 따라 런타임에 이름을 선택할 수 있습니다. –
'C#'에 대해 알게 된 직후 가장 먼저 배운 것은 직렬화입니다. 사전은 멋지지만 복잡한 데이터를 포함하고 데이터에 액세스 할 때마다 캐스팅해야하며 오류 (특히 사용자 편집 등)가 포함되는 경향이 있습니다. 직렬화/직렬화는 'XmlSerializer'를 사용하면 매우 간단합니다. '설정'은 전혀 사용하지 않으시겠습니까? json이 설정을 저장하는 데 가장 적합한 형식 인 것으로 나타났습니다. – Sinatr
관리자 권한 상승없이 한 사용자가 다른 사용자에게 영향을 미칠 수있는 바람직하지 않은 변경을 수행 할 수 있으므로 모든 사용자에게 적용되는 설정을 업데이트 할 수 없어야합니다.따라서 응용 프로그램 설정을 변경하는 것이 더 어렵다는 것을 완벽하게 이해할 수 있습니다. – Phil1970