programing

OpenMappedExe구성 대OpenExe 구성

iphone6s 2023. 5. 22. 20:48
반응형

OpenMappedExe구성 대OpenExe 구성

OpenExeConfiguration에는 두 가지 오버로드가 있습니다.

OpenMappedExeConfiguration에는 프로토타입이 하나만 있습니다.

(2)와 (3) 모두 기본 app.config 파일이 아닌 특정 구성 파일을 여는 데 사용할 수 있는 것 같습니다.

그렇다면 그들 사이의 차이점은 무엇일까요?어떤 것을 사용해야 합니까?

사용자 수준 및 구성 파일 위치는 (1)과 (2)에서 구분하되 (3)에서 결합하는 이유는 무엇입니까?

답장 감사합니다.

갱신하다

저는 마이크로소프트가 항상 한 가지 이상의 방법으로 일을 처리하는 것을 좋아한다는 것을 알고 있습니다.하지만 그것은 이유가 있어야 합니다.제 질문에 이유를 아는 사람이 있나요?현상금이 필요한가요 ;)?

이 차이는 궁극적인 .NET 구성 리소스인 .NET 2.0 구성의 수수께끼 풀기:

OpenExe 구성(문자열)

는 제공한 파일 이름에 ".config"를 추가하고 해당 구성 파일을 로드합니다.중요한 점은 OpenExeConfiguration(string exePath)이 매우 잘못된 방법이라는 점입니다. 파일 이름이 [...] 실행 중인 .exe의 파일 이름일 필요가 없기 때문입니다. EXE 파일 이름이 아닌 다른 파일 이름을 제공하면 *.config 파일을 열 수 있습니다.

OpenExe 구성(구성 사용자 수준)

두 번째 방법인 OpenExeConfiguration(ConfigurationUserLevellevel)은 지정된 구성 수준에 적합한 구성 파일을 로드합니다.Exe 컨텍스트에서 사용할 수 있는 구성 수준을 사용하면 exe, 로밍 사용자 또는 로컬 사용자 구성을 지정할 수 있습니다 [...] 구성은 계층적이고 병합됩니다.로밍 또는 로컬 사용자 구성을 요청할 때 machine.config를 통해 해당 수준이 병합되어 지정된 사용자 수준에 대해 응용 프로그램에서 액세스할 수 있는 전체 구성이 생성됩니다.

OpenMappedExeConfiguration(), OpenMappedMachineConfiguration()

구성 파일이 있는 위치에 대해 몇 가지 가정을 하는 OpenExeConfiguration() 메서드와 달리 OpenMappedExeConfiguration() 및 OpenMappedMachineConfiguration()을 사용하면 *.config 파일이 디스크에 있는 위치를 명시적으로 지정할 수 있습니다.이러한 방법을 사용하여 대체 machine.config를 로드하거나, 사용자가 선택한 위치에서 User.config 파일을 로드할 수 있습니다(.NET 프레임워크가 일부 복잡한 경로를 결정하도록 허용하는 경우와 비교).machine.config에 액세스할 때는 사용자 지정 버전이 필요하지 않으므로 OpenMachineConfiguration()을 대신 사용해야 합니다.

OpenExeConfiguration (String)&OpenMappedExeConfiguration (ExeConfigurationFileMap, ConfigurationUserLevel)매핑된 버전을 사용하면 ExecConfigurationFileMap을 사용하여 열려는 구성 파일을 선택할 수 있습니다.

를 사용하는 .OpenExeConfiguration(string)오버로드하면 Machine 및 Exe 구성 위치를 사용하여 구성을 열지만 매핑된 버전을 사용하면 어떤 위치에서도 로드할 특정 파일을 선택할 수 있습니다(분명히 여전히 사용 권한 등).

소스를 살펴보면 두 방법 모두 실제로 동일한 구현 방법을 호출합니다.

public static System.Configuration.Configuration OpenMappedExeConfiguration(ExeConfigurationFileMap fileMap, ConfigurationUserLevel userLevel)
{
    return OpenExeConfigurationImpl(fileMap, false, userLevel, null);
}

public static System.Configuration.Configuration OpenExeConfiguration(string exePath)
{
    return OpenExeConfigurationImpl(null, false, ConfigurationUserLevel.None, exePath);
}

그래서 언제 하나를 다른 하나보다 사용해야 할까요?사용하다OpenMappedExeConfiguration기본 구성 파일을 열지 않으려는 경우.내 경험에 따르면, 이러한 메소드 중 하나를 호출하는 유일한 경우는 기본이 아닌 구성을 읽고 싶어 사용한 경우뿐입니다.OpenMappedExeConfiguration.

언급URL : https://stackoverflow.com/questions/3912727/openmappedexeconfiguration-vs-openexeconfiguration

반응형