2010-01-20 4 views
3

dll이 강제로 해당 구성을 다시로드 할 수 있습니까?dll에서 applicationSettings를 새로 고치는 방법

<applicationSettings> 
    <ComWrapper.My.MySettings> 
     <setting name="MySetting" serializeAs="String"> 
      <value>This is an entry</value> 
     </setting> 
</applicationSettings> 

그것은 코드에서 "MySetting"값에 액세스 할 문제 없습니다 : 내 VB 라이브러리에서

나는이 구성을 사용하고

Public Function GetSetting() As String 
    Return ComWrapper.My.MySettings.Default.MySetting 
End Function 

하지만 그 값과 같이 "이것은 항목입니다"dll 코드에 포함되어 있습니다. app.config 또는 ComWrapper.dll.config 파일에서 값을 변경하면 반환 값에 아무런 영향을 미치지 않습니다.

답변

2

구성 값은 실행중인 프로세스 구성에서 가져옵니다. ComWrapper.dll 및 해당 구성 파일이 YourProcess.exe 컨텍스트에서 실행 중이면 YourProcess.exe.config에서 구성 설정을 가져옵니다.

그래서 ComWrapper 설정을 YourProcess.exe.config 파일에 삽입해야합니다. 그렇지 않으면 기본 생성 값 (Settings.Designer 파일에서 찾을 수 있습니다).

+0

+1, 자세한 설명 –

+0

감사합니다. 내 lib를 실행하는 응용 프로그램이 Excel이기 때문에 app.config를로드하는 것과 같은 또 다른 솔루션을 찾을 것입니다. –

0

는 나 자신

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", filename) 

내가 엑셀에서 내 lib 디렉토리를 호출하고 있습니다 때문에 나를 위해 안전에 의해 해결책을 발견했습니다, 그래서 외국 설정 값을 덮어 쓰지 않습니다.

0

내가이 일을 내 문제를 해결했습니다

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config"; 

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

string value = config.AppSettings.Settings["X"].Value 
+0

나는 그것이 트릭이라고 생각했다. 미안하지만 며칠 동안 체크 아웃 할 수 없습니다. –

관련 문제