2011-01-19 1 views
4

여러 웹 프로젝트에서 사용되는 .NET 4 클래스 라이브러리 프로젝트가 있습니다. 이 클래스 라이브러리에서 DB 연결 문자열을 가져와야하며 모든 웹 프로젝트에서 동일해야합니다. 현재 각각 web.config 파일에 설정되어 있지만 이상적은 아닙니다. DLL과 함께 저장된 구성을 가질 수있는 방법이 있습니까? 그렇지만 런타임에 수정할 수 있도록 허용합니다 (예 : 연결 문자열을 하드 코드하는 중입니다)?.NET DLL (EXE 또는 웹이 아님)의 구성 설정을 저장합니다.

의 App.config은 의 AssemblyName에 .dll.config 이름을 변경하고 웹에 대한 디렉토리에 복사 얻을 않더라도, 일반적으로 DLL 무시 것으로 보인다. 나는 그것을 "응용 프로그램 설정"(예 : System.Configuration.ApplicationSettingsBase에서 파생 된 자동 생성 클래스 사용)으로 만들려고했는데이 이 나타 났지만 런타임에는 DLL .config 파일의 값을 변경해도 효과가 없었습니다. 실제로 하드 코드 된 기본값을 사용합니다..

+0

dll은 항상 응용 프로그램 (exe 또는 web)에서 사용되므로 응용 프로그램의 구성 파일에 구성을 저장할 수없는 이유는 무엇입니까? –

+0

나는 그것이 현재 할 수있는 일이지만, 나는 5 개소에 동일한 값을 저장해야한다. – EMP

+0

5 개의 다른 장소가 있기 때문에 ... 5 개의 다른 응용 프로그램이 있습니다!? –

답변

0

변경할 방법이 없습니다. .NET이 작동하는 방식입니다. DLL app.config의 설정을 web.config 또는 programName .exe.config 파일에 복사해야합니다.

+0

이유는 downvote? 내 대답이 부정확합니까? –

2

라이브러리를 사용하는 컴퓨터의 모든 프로그램에 대해 설정이 동일해야하는 경우 레지스트리 데이터베이스에 설정을 저장할 수 있습니다.

+0

@Pauli : 레지스트리 제안을 위해 -1. 와우. –

+3

레지스트리 데이터베이스가 실제로 무엇이라고 생각하십니까? –

+4

+1, 나는 그것이 특히 좋은 생각이라고 생각하기 때문에가 아니라 위의 downvote로 인해이 답변을보기 좋게 보이게 만들지 않기 위해서입니다. 나는 레지스트리가 때로는 이유없이 눈살을 찌푸린다고 생각합니다. 분명히 응용 프로그램 설정 (또는 xcopy- 배포)의 지역 및 발견 가능성과 관련하여 문제가 있습니다. 그러나 중앙 위치에 값을 저장해야하는 기술적 요구가있는 경우 최소한 * central * 구성 파일을 사용하는 것만 큼 은폐 된 IMHO입니다 (그러나 DLL 코드에서 읽습니다). –

2

개인적으로, 필자는 개인적으로 (필자는 어떻게 든 작동하도록 관리하고 내장 된 구성 메커니즘으로 인해 사용자를 보내지 않더라도) 그렇게 할 것입니다. 항상 응용 프로그램의 동작 설정을 에 저장하고 응용 프로그램 자체의 설정은입니다. 나는 그러한 값들이 데이터베이스에 저장되어있는 시스템을 보았고, 보았습니다. 물론 이것은 연결 문자열에는 적합하지 않습니다.

DLL은 수동적 인 (또는 있어야 함) 사용자의 명시적인 호출에서만 작동하므로 "자체"진단을위한 구성은 필요하지 않지만 그 다음에도 가능합니다. .) 호출자가 각 기능을 사용할 때나 그 전에 사용할 수 있기 때문입니다.

부수적으로 동일한 설정이 필요한 여러 응용 프로그램이있는 경우 DLL에 대해 알아야하거나 관심을 기울여야 할 것이 없습니다.

더 쉽게 관리 할 수 ​​있도록이 이슈를 빌드 또는 배포 프로세스로 재배치하는 것이 좋습니다. 귀하의 응용 프로그램 구성 파일 (그 문제에 대한 web.config 파일) connectionstring에 대한 자리 표시자를 넣어. 그런 다음 빌드 또는 배포 중에 (필요에 따라 어떤 것이 든) 그 자리 표시자를 실제 연결 문자열로 바꿉니다.이 연결 문자열은 단일 파일로 유지할 수 있습니다.

관련 문제