Получение 64-битной версии machine.config - PullRequest
5 голосов
/ 13 мая 2011

Прямо сейчас я звоню по следующей строке

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-битном сервере.

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

Есть ли способ получить 64-битную версию, не прибегая к выполнению ConfigurationFileMaps - например, Примеры конфигурации из Msdn

Обновление для комментария

  • Прямо сейчас,Настройка платформы установлена ​​на Любой процессор
  • Я выполняю код в классе, который наследуется от System.Configuration.Install.Installer стандартного приложения
  • Этот проект, в котором расположен код,выполняется как настраиваемое действие в проекте установки установщика Visual Studio

1 Ответ

1 голос
/ 13 мая 2011

На основании приведенных выше ответов я создал установщик Visual Studio. Может показаться, что установщик по умолчанию работает как 32-битный процесс. Таким образом, любой код .NET, который вы запускаете в качестве пользовательского действия установщика, будет работать как 32-разрядный, поэтому вы видите только 32-разрядный файл Machine.Config, а не 64-разрядную версию. В этой статье MSDN объясняется, как создать установщик в качестве 64-разрядного установщика. 32-разрядный установщик может устанавливать 64-разрядные элементы, однако 64-разрядный установщик может быть установлен только на 64-разрядной ОС. Вам может потребоваться создать два установщика (32-разрядный и 64-разрядный), а затем попросить пользователей использовать соответствующую версию, если вы хотите сохранить ее простоту. После того, как я внес изменения в TargetPlatform для установщика, он появился в TaskManager как 64-битный процесс.

...