문제

우리는 DLLS를 동적으로로드 (특정 디렉토리에 위치한)를 반사하여 워크 플로 클래스를 호출하는 "엔진"이 있습니다.

이제 데이터베이스에 액세스 해야하는 새로운 워크 플로가있어서 DLL 디렉토리에 구성 파일을 넣을 것이라고 생각했습니다.

그러나 어떤 이유로 내 워크 플로는 구성 파일이 표시되지 않습니다.

<configuration>
  <appSettings>
      <add key="ConnectString" value="Data Source=officeserver;Database=mydatabase;User ID=officeuser;Password=officeuser;" />
  </appSettings>
</configuration>

위 구성 파일이 주어지면 다음 코드는 빈 문자열을 인쇄합니다.

Console.WriteLine(ConfigurationManager.AppSettings["ConnectString"]);

내가 원하는 것은 구성 파일 이름을 지정하는 것이지만 여기에 문제가 있습니다. 나는 단지 결과를 얻지 못한다. 누구든지 포인터가 있습니까?

도움이 되었습니까?

해결책

AppSettings를 읽기위한 코드 샘플이 DLL에 있으면 DLL의 구성 파일이 아닌 응용 프로그램의 구성 파일을 읽으려고합니다. 반사를 사용하여 코드를 실행하기 때문입니다.

다른 팁

Funny, 내가 어디에 있는지 우리는 매우 유사한 일을하고 구성 파일이 잘로드됩니다. 우리의 경우 나는 각각의 새로운 구성 파일의 이름이 관련 어셈블리의 이름과 일치한다고 생각합니다. 따라서 mylibrary.dll에는 해당 파일 어셈블리에 대한 정보가 포함 된 MyLibrary.dll.config라는 파일이 있습니다. 또한 내가 편리한 예제는 c# 대신 vb.net을 사용하는 것입니다 (각각 일부가 있습니다). vb- 특이 적 My.Settings 네임 스페이스에 대한 모든 설정이 있으므로 configurationManager 클래스를 직접 사용하지 않습니다. 읽으십시오.

설정 자체는 다음과 같습니다.

<applicationSettings>
    <MyLibrary.My.MySettings>
        <setting name="SomeSetting" serializeAs="String">
            <value>12345</value>
        </setting>
    </MyLibrary.My.MySettings>
</applicationSettings>

나는 비슷한 시스템을 위해 이것을 썼습니다. 나의 기억은 내가 사용한 것입니다 Assembly.GetExecutingAssembly 파일 경로를 DLL로 가져 오려면 추가 .config 그 이름으로, 그것을로드했습니다 XmlDocument, <appSettings> 노드로 전달했습니다 NameValueSectionHandler'에스 Create 방법.

다음은 다음과 같습니다.

생성자로 호출하십시오.

올바르게 기억하면 App.Config가 응용 프로그램 디렉토리에서로드되므로 다른 디렉토리에서 DLL을로드하는 경우 응용 프로그램의 구성 파일에 필요한 키를 원할 것입니다.

나는 확실하지 않지만 클래스는 기본적으로 AppDomain (대부분의 EXE의 경로)의 입력 방법과 함께 작동한다고 생각합니다. 다른 구성 파일을 가리 키려면 먼저 openexeconfiguration (String Exepath) (프레임 워크 2.0 이상)을 호출해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top