2011-05-13 4 views
5

지금 다음 행을 호출합니다.machine.config의 64 비트 버전 얻기

System.Configuration.Configuration cnf = ConfigurationManager.OpenMachineConfiguration(); 

결과는 다음과 같습니다. cnf.FilePath == C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config

32 비트 2003 서버와 64 비트 2008 R2 서버에서 다음 결과를 얻었습니다. 이상적인 64 비트 서버에 설치하면 64 비트 폴더를 반환하고 싶습니다.

일명 - C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config

ConfigurationFileMaps를 사용하지 않고 64 비트 버전을 구할 수있는 방법이 있습니까? 예 : Configuration examples from Msdn

  • 지금 당장 플랫폼 설정은 모든 CPU로 설정됩니다.
  • 표준의 System.Configuration.Install.Installer에서 상속받은 클래스에서 코드를 실행하고 있습니다. 응용 프로그램
  • 코드가 위치한이 프로젝트는 Visual Studio Installer 설치 프로젝트에서 사용자 지정 작업으로 실행됩니다.
+1

"플랫폼 대상"을 프로젝트 설정에서 어떻게 설정합니까? –

+0

티켓을 답변으로 업데이트했습니다. 이는 모든 플랫폼에 설정되어 있습니다. – Lareau

+2

표준 응용 프로그램입니까, 아니면 웹 응용 프로그램입니까? 웹 응용 프로그램 인 경우 응용 프로그램 풀의 "32 비트 응용 프로그램 사용"설정은 무엇입니까? –

답변

1

에서 사용자 지정 작업으로 실행되고있다 위치해이 프로젝트의 .Configuration.Install.Installer, 나는 비주얼을 만들어 Studio Installer. 설치 프로그램은 기본적으로 32 비트 프로세스로 실행됩니다. 이와 같이 사용자 지정 설치 관리자 동작으로 실행하는 모든 .NET 코드는 32 비트로 실행되므로 32 비트 Machine.Config 만보고 64 비트 버전은 볼 수 없습니다. 이 MSDN Article은 설치 프로그램을 64 비트 설치 프로그램으로 만드는 방법을 설명합니다. 32 비트 설치 관리자는 64 비트 항목을 설치할 수 있지만 64 비트 설치 관리자는 64 비트 OS에만 설치할 수 있습니다. 두 개의 설치 프로그램 (32 비트 및 64 비트)을 만든 다음 사용자가 간단하게 유지하려는 경우 적절한 버전을 사용하게해야 할 수도 있습니다. 설치 프로그램의 TargetPlatform을 변경 한 후 TaskManager에 64 비트 프로세스로 나타났습니다.

+0

이 문제를 해결해 주셔서 감사합니다. 오래된 서버에서 필요하기 때문에 아마도 일부 경로 문자열 (프레임 워크 64로 알려진 프레임 워크)을 가지고 놀고 ConfigurationFileMap을 시도 할 것입니다. – Lareau