2009-10-15 5 views
0

시작하려면 .NET 2.0 콘솔 응용 프로그램이 있어야합니다. 고객의 요구 사항을 충족시키기 위해 필자는 자신의 응용 프로그램과 다른 디렉토리에있는 구성 파일을 읽기/쓰기 방식으로 사용해야합니다. 이것은 내 응용 프로그램이 이미 가지고있는 exe 구성 (예 : appname.exe.config)에 추가됩니다..NET 구성 파일 - OpenMappedExeConfiguration을 사용해야합니까?

이렇게하려면 OpenMappedExeConfiguration()에 대한 호출에서 얻은 Configuration 개체를 반환하는 Configuration 속성을 추가했습니다.

이 구현을 다시 평가하기 위해 단계별로 노력하고 있습니다. 내가 쓴 것은 정말 해킹 된 것처럼 보인다. 이것이 올바른 접근법일까요? 나는 .net 설정 파일에 대해 많은 내용을 읽었지만, 내가해야할 일을 정확히 모르겠다.

class LocalEnvironment { 

    ... stuff 

    static Configuration _cfg; 

    internal static Configuration Configuration { 
     get { 

      if (_cfg == null) { 
      var fm = new ExeConfigurationFileMap 
         { 
          ExeConfigFilename = Path.Combine(ApplicationInstallDirectory, 
                   "config.xml") 
         }; 

       _cfg = ConfigurationManager.OpenMappedExeConfiguration(fm, ConfigurationUserLevel.None); 
      } 
      return _cfg; 
     } 
    } 
} 

답변

3

왜 표준 .config 파일의 다른 파일을 참조하지 않는 것이 좋습니까?

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings file="..\RelativePathTo\MoreSettings.config"> 
    ... 
    </appSettings> 
</configuration> 

MoreSettings.config

<?xml version="1.0" encoding="utf-8" ?> 
<appSettings> 
    <add key="Something" value=""/> 
</appSettings> 
+0

이 접근법의 유일한 문제점은 모든 앱 설정을 두 번째 파일로 이동해야한다는 것입니다. 또한 런타임 중에 업데이트하지 않으면 상대 경로 요구 사항이 문제가 될 수 있습니다. – sylvanaar

+0

애드리안에 완전히 동의합니다. 개인적으로, 모든 .config와 관련된 .config 관련 구성 파일이 마음에 들지 않습니다. 엉망이 많이 생깁니다. 자신의 XML 파일을 만들고 App.Config에서이 파일을 참조하고 고객에게 해당 xml 파일을 업데이트하라고 알려줍니다. 그리고 잘 사는 삶. 어떤 설정이라도 하나의 설정 파일에 있습니다. @Sylvanaar :이 문제가 해결되지 않았 으리라 생각됩니다. 즉, 설정을 위해 app.config를 사용하지 않고 구성을 위해 다른 (가장 가능성있는 xml) 파일을 사용합니다. app.config 파일을 변경할 때마다 응용 프로그램을 다시 시작해야합니다. –

+0

또한이를 위해 작동하는 솔루션이 필요한 경우 알려 주시기 바랍니다. 나는 그것을 내 프로젝트에서 사용한다. 그 편리한. –

0

나는 똑같이 할 것이다. 내가 찾을 수있는 더 나은 해결책이 없습니다.

1

이 내가하는 일이며, 많이 간단하고 유연한의 지옥이다. 이 링크 된 게시물에는 예제 코드가 있으므로 이미 작성되었습니다. :-)

(.Net) suggestions on making a config file for a program?

+1

당신은 요점이 있습니다. 저는 프레임 워크의 구성 시스템을 사용할 필요가 없다고 생각합니다. 이제 막 시작 했으므로 고객 요구 사항의 변화에 ​​적응해야했습니다. – sylvanaar

+0

나는 "바퀴를 새롭게"하고 싶지 않은 것과 같은 방식으로 시작했다 ... 나는 "바퀴"가 어리석게 복잡하다는 것을 깨달을 때까지 시작했다. :-) –

0

당신이 무슨 일을하는지 할 수있는 유효한 이유가있다. 예를 들어 svcutil.exe (.net framework SDK 도구)는 사용자가 특정 구성 파일을 svcutil.exe의 구성 파일로로드하게하는 데 사용할 수있는/svcutilConfig 스위치를 제공합니다. 이것은 사용자가 코드 생성 프로세스를 확장하고 사용자 정의 할 수 있도록 필요합니다. 이러한 확장은 config에서만 지정됩니다.

코드는 기본적으로 svcutil.exe의 코드와 동일하며이를 수행하는 가장 좋은 방법 인 것으로 보입니다.

다시 말하면 사용자가 전체 구성 파일을 바꾸도록 할 필요가 있는지 고려해야합니다. 다른 포스터가 주석을 달았으므로 appSettings에 대한 액세스 권한을 부여하는 것만으로도 충분할 수 있습니다.이 설정은보다 간단하게 수행 할 수 있습니다.