5

今、私は次の行を呼んでいます

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

結果は次のようになります。cnf.FilePath==C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config

32ビットの2003サーバーと64ビットの2008R2サーバーで次の結果が得られます。理想的には、64ビットサーバーにインストールしたときに64ビットフォルダーを返したいと思います。

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

ConfigurationFileMapsを実行せずに64ビットバージョンを取得する方法はありますか ?Msdnの構成例など

コメントの更新

  • 現在、プラットフォーム設定はAnyCpuに設定されています
  • 標準アプリケーションのSystem.Configuration.Install.Installerから継承するクラスでコードを実行しています
  • コードが配置されているこのプロジェクトは、VisualStudioインストーラーセットアッププロジェクトでカスタムアクションとして実行されています
4

1 に答える 1

1

上記の回答に基づいて、VisualStudioインストーラーを作成しました。インストーラーはデフォルトで32ビットプロセスとして実行されているように見えます。そのため、カスタムインストーラーアクションとして実行している.NETコードは32ビットとして実行されるため、64ビットバージョンではなく32ビットのMachine.Configのみが表示されます。このMSDNの記事では、64ビットインストーラーとしてインストーラーを作成する方法について説明しています。32ビットインストーラーは64ビットアイテムをインストールできますが、64ビットインストーラーは64ビットOSにのみインストールできます。単純にするために、2つのインストーラー(32ビットと64ビット)を作成してから、ユーザーに適切なバージョンを使用させる必要がある場合があります。インストーラーのTargetPlatformに変更を加えた後、64ビットプロセスとしてTaskManagerに表示されました。

于 2011-05-13T15:03:17.470 に答える