6

実行可能ファイルへのパスをハードコーディングする必要があるビルドスクリプトがあります。パスは次のとおりです。

  • C:\ Program Files \ Microsoft Visual Studio 9.0 \ SmartDevices \ SDK \ SDKTools \ cabwiz.exe

これは正常に機能しましたが、現在は64ビットOSで実行しています(ただし、同僚とビルドサーバーは32ビットのままです)。

私はこれになるためのパスが必要です:

  • C:\ Program Files (x86) \ Microsoft Visual Studio 9.0 \ SmartDevices \ SDK \ SDKTools \ cabwiz.exe

ただし、他のパスには通常のパスを使用してください。

これが私がそれを設定する方法です:

<PropertyGroup>
    <CabWiz>"C:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe"</CabWiz>
</PropertyGroup>

OS(現在のビルド構成ではない)が64ビットの場合に設定できるように設定できる条件はありますか?

4

4 に答える 4

7

現在のOSのビット数を示すレジストリキーがあります。MSBuildファイルで使用するプロパティは次のとおりです。

<PropertyGroup>
        <MachineProcessorArchitecture>$(registry:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment@PROCESSOR_ARCHITECTURE)</MachineProcessorArchitecture>
        <Is32Bit>False</Is32Bit>
        <Is32Bit Condition="'$(MachineProcessorArchitecture)' == 'x86'">True</Is32Bit>
        <Is64Bit>False</Is64Bit>
        <Is64Bit Condition="'$(MachineProcessorArchitecture)' == 'AMD64'">True</Is64Bit>
</PropertyGroup>
于 2010-12-02T23:33:25.540 に答える
4

あなたは正しいプログラムファイルフォルダを推測するためにビットネスを使用していますが、それがCドライブ上にある、または「プログラムファイル」と呼ばれるという保証はありません。$(MSBuildProgramFiles32)プロパティ(MSBuild 4.0の場合)を使用することをお勧めします。

于 2010-12-07T20:37:04.733 に答える
3

64ビットOSでは、次の変数が定義されています。

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)

したがって、テストしてProgramFiles(x86)、空の場合はを使用しますProgramFiles

于 2010-08-17T17:52:35.323 に答える
1

プラットフォームに関係なく、常に32ビットバージョンのMSBuildを実行している場合は、簡単です。「C:\ ProgramFiles」の代わりに「$(ProgramFiles)」を使用するだけです。32ビットOSでも64ビットOSでも、'$(ProgramFiles)'は正しいフォルダーの場所(すべての32ビットプログラムの場所)に展開する必要があります。

64ビットプラットフォームで64ビットバージョンのMSBuildを実行している場合(これはありそうもないことです)、少し注意が必要です。'%ProgramFiles(x86)%'環境変数はあなたが望むもののように見えますが、それらの括弧を処理するのは幸運です。おそらく、条件で'%PROCESSOR_ARCHITECTURE%'環境変数を使用する方が簡単です。

于 2010-08-17T18:23:47.040 に答える