2011-05-13 57 views
5

的64位版本的現在,我打電話以下行獲得的machine.config

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

結果如下 cnf.FilePath == C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Config \ machine.config

我在32位2003服務器和64位2008 R2服務器上得到以下結果。 理想情況下,我想在安裝在64位服務器上時返回64位文件夾。

又名 - C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中

有沒有辦法讓64位版本,而不訴諸做ConfigurationFileMaps - 如 Configuration examples from Msdn

發表評論更新

  • 眼下,該平臺設置爲任何CPU
  • 我運行代碼,從系統繼承的類一個標準的應用
  • 這個項目中,代碼位於被作爲運行在Visual Studio安裝程序安裝項目
+1

你有什麼「平臺目標」設置爲在你的項目設置? – 2011-05-13 14:00:24

+0

使用您的答案更新了票 - 它已設置爲任何平臺。 – Lareau 2011-05-13 14:30:03

+2

這是一個標準的應用程序或Web應用程序?如果它是一個Web應用程序,應用程序池的「啓用32位應用程序」設置是什麼? – 2011-05-13 14:32:52

回答

1

基於上述答案自定義操作的.Configuration.Install.Installer,我創建了一個可視化Studio安裝程序。看起來安裝程序默認運行爲32位進程。因爲您運行的自定義安裝程序操作的任何.NET代碼都將以32位運行,這就是您只能看到32位Machine.Config而不是64位版本的原因。這MSDN Article解釋瞭如何創建安裝程序作爲64位安裝程序。 32位安裝程序可以安裝64位的項目,但是,64位安裝程序只能安裝在64位操作系統上。您可能需要創建兩個安裝程序(32位和64位),然後讓用戶使用適當的版本,如果您想保持簡單。在對安裝程序的TargetPlatform進行更改後,它在TaskManager中顯示爲64位進程。

+0

感謝您瞭解這一點。由於我需要它的舊服務器,我可能會開始玩一些路徑字符串(aka框架framework64),並嘗試ConfigurationFileMap。 – Lareau 2011-05-13 15:05:49