42

64ビットバージョンのWindowsでは、32ビットソフトウェアが「c:\ programfiles(x86)」にインストールされます。これは、$(programfiles)を使用して(32ビット)ソフトウェアへのパスを取得できないことを意味します。したがって、MSBuildプロジェクトでこれを克服するには、$(ProgramFiles32)が必要です。実行しているOSに応じてプロジェクトを変更したくありません。

投稿する解決策がありますが、もっと簡単で良い方法があるかもしれません。

4

7 に答える 7

16

私の解決策は、「c:\ program files(x86)」が存在するかどうかを確認することです。存在する場合は、これが64ビットOSであると想定します。それ以外の場合は、通常のプログラムファイルディレクトリを使用します。

<PropertyGroup>
  <ProgramFiles32 Condition="Exists('$(PROGRAMFILES) (x86)')">$(PROGRAMFILES) (x86)</ProgramFiles32>
  <ProgramFiles32 Condition="$(ProgramFiles32) == ''">$(PROGRAMFILES)</ProgramFiles32>
</PropertyGroup>

こんな感じで使えます

<Exec WorkingDirectory="src\app1" Command='"$(ProgramFiles32)\doxygen\bin\doxygen" Doxyfile' />
于 2008-12-06T10:38:30.150 に答える
12

MSBuild 4.0では$(MSBuildProgramFiles32)、32ビットのプログラムファイルディレクトリが提供されます。

于 2010-12-07T19:50:51.120 に答える
10

試す"$(MSBuildExtensionsPath32)\.."

于 2009-06-27T06:37:36.357 に答える
4

もう少し信頼できる方法は、環境変数「ProgramFiles(x86)」を取得することだと思います。Windowsの64ビットプロセスでは、これは32ビットプログラムファイルディレクトリを指します。32ビットバージョンのWindowsでは空になり、wow64プロセスを信じています

最近、いくつかのPowerShellスクリプトで実質的に同じ問題が発生しました。プログラムファイルディレクトリの問題を回避する方法についてのブログエントリを作成しました。明らかに異なる言語ですが、それはあなたを助けるかもしれません。

http://blogs.msdn.com/jaredpar/archive/2008/10/21/program-files-i-just-want-the-32-bit-version.aspx

于 2008-12-06T10:52:20.030 に答える
1

MSbuild で 32 ビット OS か 64 ビット OS かを確認する一般的な方法を見つけようとして、この質問に出くわしました。他の誰かがこれを見つけた場合に備えて、私は以下を使用しました:

<PropertyGroup>
  <OSBits Condition="$(ProgramW6432) != ''">x64</OSBits>
  <OSBits Condition="$(OSBits) == ''">x32</OSBits>
</PropertyGroup>

どうやら%ProgramW6432%、64ビットシステムでのみ設定されています。

于 2010-03-25T21:08:48.960 に答える
1

Visual Studio ツールの 32 ビット バージョンを実行する場合 (特に VS2012 では、選択できる 3 つの異なるコマンド プロンプトがあります)、$(ProgramFiles) は「Program Files (x86)」を指します。

于 2013-07-15T16:46:16.053 に答える