2010-06-04 4 views
24

Application settings (사용자 별 설정 아님)과 .config 파일 < 어셋 >을 사용할시기에 대한 권장 사항이 있습니까? 그들은 모두 효과적으로 키/값을 저장이기 때문에 미세한 중요한 차이점을 이해하기 위해 찾고.NET 설정 대 구성을 사용하는 경우 <appsettings>?

업데이트
. 예를 들어 web.config에서 appsettings를 수정하면 웹 응용 프로그램이 재활용된다는 것을 알고 있습니다.

설정이 .NET에 잠시 동안 있습니다. 나는 그들을 보지 않으려 고합니다. 어쩌면 하나는 다소 중복되거나, 동시에 둘 다 사용하면 의미가 없습니다. 세부 사항을 이해하고 이유를 찾고 있어요.

+0

방금 ​​찾았 음 http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx –

답변

3

응용 프로그램 설정 및 구성 파일 appSettings 섹션은 간단한 값 설정에 좋은 키 값 쌍으로 제한되지만보다 강력한 데이터 지속성이 필요한 경우 응용 프로그램에 대한 사용자 정의 구성 섹션 작성을 참조하십시오. 여기에 사용자 정의를 작성하는 stackoverflow 기사가 있습니다 config section

즐기십시오!

+0

나는 과거에 사용자 지정 구성 섹션을 만들었으므로 이번에는 이미이 옵션을 사용하지 않기로 결정했습니다. 현재이 두 가지 종류의 설정 간의 미세한 차이점을 모색하고 있습니다. –

+1

조금 더 깊게 파고 드는 것으로, 설정 파일의 응용 프로그램 설정과 AppSettings의 주요 차이점은 응용 프로그램 설정이 호환된다는 것입니다. 응용 프로그램을 다시 컴파일하지 않고 변경할 수있는 app.config 파일에 AppSettings가 유지됩니다. – Doug

+0

처음에는 맞춤 설정 클래스를 만드는 데 많은 시간이 걸리지 만 때로는 시간을 절약 할 수 있습니다. 예를 들어, 설정 파일의 변경 사항을 직렬화 (저장)해야하는 경우에 편리합니다. – JohnB

0

& 코드를 컴파일 한 후에 바뀔 수있는 거의 모든 것을 .config 파일 설정 (web.config)을 사용합니다. 당신이 그것을 쉽게 바꿀 수 있기 때문에 좋다. 필자는 응용 프로그램 설정에 익숙하지 않지만 응용 프로그램을 변경 한 경우 응용 프로그램을 다시 컴파일해야하는 것처럼 보입니다.

+0

App.config와 똑같은 작업을합니까? ... 최근에 C# Console 프로젝트를 컴파일 할 때 'bin'폴더에 App.config가 없다는 것을 알았습니까? ... 설정을 위해 한 곳을 가지고 있어도 여전히 좋습니다. – Dal

+0

@Dal - app.config가 yourexe.exe.config라는 이름으로 bin에 컴파일됩니다. – Reddog

2

응용 프로그램 설정을 입력 할 수 있습니다. 이는 appsettings와 비교하여 플러스입니다. 그리고 액세스 할 수있는 방법은 좀 더 깔끔하고 (속성) 배열에서 값을 가져 오는 것입니다.

그리고 인터페이스를 사용하여 설정을 데이터베이스에 저장하는 설정 클래스를 구현할 수 있습니다.

0

응용 프로그램 설정이 어셈블리로 컴파일되지 않습니다.

확실치 않지만 응용 프로그램 설정 기본값이 어셈블리로 컴파일되지만 구성 파일에서 재정의 할 수 있다고 생각합니다.

저는 응용 프로그램 설정이 VB.Net에서보다 친숙한 방법으로 만들어 졌다고 생각합니다. 그러나 큰 차이점은 없을 것이라고 생각합니다. 적어도 간단한 설정에서 나는 LeonG의 대답에 대한 이유로 응용 프로그램 설정을 선호합니다.

0

내가 설정을 살펴 보지도 않았으므로 탐색 할 테스트 앱을 만들었습니다. 다음은 몇 가지 무작위 결과입니다.

  • 설정은 코드에서 참조 할 수있는 명시 적 속성/이름을 제공하지만 컴파일 된 응용 프로그램을 디스 어셈블하면 getter는 내부 사전에서 값을 조회합니다.
  • 설정은 자신의 섹션에서 .config 파일로 돌아갑니다. 값을 변경하기 위해 .config 파일을 편집 할 수있는 것처럼 보일 수도 있지만, 다음 경우에 설명 된 것과 같은 경우는 아닙니다.
  • 위에 링크 된 문서에 따르면 값을 얻는 유일한 방법은 Properties.Settings.Default.myColor = Color.AliceBlue;을 사용하는 것이지만 이것이 항상 속성의 속성으로 코드에 컴파일되는 기본값을 제공합니다. (리플 렉터를 사용하여 이것을 확인했습니다. 게터에는 다음 태그가 붙어 있습니다 : [ApplicationScopedSetting, DefaultSettingValue("asdf"), DebuggerNonUserCode]).
  • 설정이 강력하게 입력됩니다. 컴파일러는 객체의 직렬화를 자동으로 처리합니다 (단 몇 줄의 코드 일뿐입니다).

전반적으로 매우 유사합니다. 설정 대화 상자는 디자인 타임에 가치를 구성 할 수있는 디자이너 방식을 제공합니다. 또한 직렬화도 처리합니다. 나는 현재 값을 사용하는 대신 IE를 저장하는 것이라면 모든 사용자 정의를 실행 취소하는 좋은 방법이 될 디폴트 값 대신 실제 값을 얻는 방법이 있다고 확신한다. 기본값을 참조한다. 값). 현재 현재 값을 참조하는 방법을 알지 못합니다.

+0

내가 잘못 기억하지 않는 한 (최근에 VB를 사용하여 바로 가기가 있음), 실제 값을 가져 오는 대신 기본값은 Properties.Settings의 인스턴스를 만들고 속성을 사용하기 만하면됩니다. –

1

한 가지 알아둬야 할 점은 설정 파일이 이제 쓰기 가능하다는 사실에도 불구하고 ClickOnce를 통해 배포하는 경우 해당 파일 해시가 포함 된 이후로 ClickOnce 배포 응용 프로그램에없는 것입니다.

따라서 어림짐작은 환경 구성이 app.config에 들어간다는 것입니다. 사용자 구성의 모든 설정이 설정에 적용됩니다.

때로는 선이 조금 퍼지기 때문에 퍼지스런 것들에 대해서는 정적 접근 방법으로 포장하여 주위를 자유롭게 이동할 수 있습니다.

1

내가 전에 해본 것 중 하나는 유지할 설정에 적합한 속성을 포함하는 클래스를 만드는 것입니다. 클래스 인스턴스는 XML로 파일에 직렬화되며 나중에 동일한 객체, 속성 값을 그대로 되돌리기 위해 직렬화 해제 될 수 있습니다. 또한 응용 프로그램을 재활용 할 필요가 없습니다. web.config/app.config 파일에 쓰면 응용 프로그램을 재활용 할 수 있습니다.

이렇게하면 강력한 형식의 응용 프로그램 설정을 얻을 수 있으며 키와 값에 대해 걱정할 필요가 없습니다. 이 응용 프로그램 내에서 사용자가 설정할 수있는 옵션을 제공하고자 할 때 상당히 잘 작동했습니다.

16

질문은 조금 오래된하지만 난 그것을 우연히 발견하고 (원시 < appSettings는에 > 섹션을 반대) ... 경우 다른 사람에

설정 옵션을 또한시 실수를 한단다 일부 선명도를 추가 할 생각 프레임 워크의 강력한 지원이 있습니다

  1. 설정 강력한 형식 (즉 BOOL, INT, ConnectionString을, 등)의 요구가있을 경우 문자열이 코드에 의해 구문 분석하는 모든이 반환되는 대신.

  2. 설정은 a) 내부 또는 공개, b) 사용자 또는 응용 프로그램 단위 (본질적으로 컴퓨터 당 의미)로 범위가 지정 될 수 있습니다.

  3. 응용 프로그램이 설정을 변경하기 위해 고유 한 인터페이스를 제공해야하지만 설정 속성이 코드에서 읽기/쓰기이므로 변경 사항을 저장하는 기능은 매우 간단합니다.

  4. 배포 된 app.config (또는 web.config) 파일은 기본값 (예 : 런타임 변경 사항 처리 방법은 아래 참조) 만 저장합니다. 즉, 설정을 변경하고 런타임에 저장하는 것은 변경되지 않습니다. .config 파일과 확장명으로 인해 응용 프로그램이 다시 시작되지는 않습니다.

  5. 변경 사항은 선택한 범위에 따라 로컬 위치 (c : \ ProgramData .. 또는 c : \ Users \ MyUser \ AppData \ Local ..)에 저장됩니다.따라서 응용 프로그램의 후속 릴리스에서는 이전에 사용자 지정된 값을 안전하게 저장하지 않으므로 새 설정을 안전하게 도입 할 수 있습니다.

희망 사항은 약간 정리하는 데 도움이됩니다.

+2

하나의 작은 gotchya 중 하나가 지적하는 가치는 Settings 접근 방식이 App.config ** 및 ** Settings.Designer.cs 파일로 컴파일 된 ** 두 개의 ** 장소의 각 설정에 대한 기본값을 저장한다는 것입니다. 이것은 설정 가치가 어디에서 오는지를 파악할 수 없을 때 슬픔에 빠져 일하는 사람들을 일으켰습니다. 구성 파일에 설정 키 이름이없는 경우 이전 스타일의 appSettings 방식을 사용하면 명시 적으로 처리 할 수 ​​있지만 새로운 설정은 개발자가 디자이너에서 기본값으로 설정 한 모든 것을 반환합니다 (일반적으로 원하는 것은 아닙니다) . – Nick

5

지금까지 답변에서 간과되는 것으로 보이는 점은 .config 파일은 Transformation files을 사용하여 변형 될 수 있다는 것입니다. 이러한 파일은 기본적으로 Visual Studio에서 Web.config 파일에 사용할 수 있으며 Visual Studio 용 SlowCheetah - XML Transforms 추가 기능이 포함 된 임의의 .config 파일에 사용할 수 있습니다 (SlowCheetah는 또한 미리보기를 추가하고 빌드에 변형을 적용 함) deploy

관련 문제