2011-05-13 13 views
5

En este momento, estoy llamando a la línea siguienteConseguir versión de 64 bits de machine.config

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

el resultado es el siguiente cnf.FilePath == C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config

Obtengo el siguiente resultado en un servidor 2003 de 32 bits y un servidor 2008 R2 de 64 bits. Idealmente, me gustaría devolver la carpeta de 64 bits cuando se instala en un servidor de 64 bits.

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

¿Hay una manera de conseguir la versión de 64 bits sin recurrir a ConfigurationFileMaps haciendo - como Configuration examples from Msdn

actualización para hacer comentarios

  • en este momento, el ajuste de la plataforma se establece en cualquier CPU
  • estoy ejecutando el código de una clase que hereda de Sistema .Configuration.Install.Installer de una aplicación estándar
  • Este proyecto donde el código se encuentra se está ejecutando como una acción personalizada en un proyecto de instalación de Visual Studio Installer
+1

¿En qué tiene establecido el "objetivo de la plataforma" en la configuración de su proyecto? –

+0

Actualizó el ticket con su respuesta: está configurado para cualquier plataforma. – Lareau

+2

¿Es esta una aplicación estándar o una aplicación web? Si es una aplicación web, ¿qué es la configuración "Activar aplicaciones de 32 bits" del Conjunto de aplicaciones? –

Respuesta

1

Con base en las respuestas anteriores, he creado un Visual Studio Installer. Parece que el instalador se ejecuta como un proceso de 32 bits por defecto. Como tal, cualquier código .NET que tenga en ejecución como acción personalizada del Instalador se ejecutará como 32 bits, por lo que solo verá el Machine.Config de 32 bits y no la versión de 64 bits. Este MSDN Article explica cómo crear el instalador como un instalador de 64 bits. Un instalador de 32 bits puede instalar elementos de 64 bits, sin embargo, un instalador de 64 bits solo puede instalarse en un sistema operativo de 64 bits. Es posible que necesite tener dos instaladores creados (32 bits y 64 bits) y luego haga que los usuarios usen la versión adecuada si desea mantenerlo simple. Después de realizar el cambio en TargetPlatform para el instalador, apareció en TaskManager como un proceso de 64 bits.

+0

Gracias por resolver esto. Como lo necesito para servidores antiguos, probablemente empiece a jugar con alguna cadena de ruta (también conocido como framework to framework64) y pruebo el ConfigurationFileMap. – Lareau

Cuestiones relacionadas