msbuild - 在MSBuild中找出当前操作系统的 "Bit"

标签 msbuild 64-bit msbuild-propertygroup

我有一个构建脚本,需要对可执行文件的路径进行硬编码。路径是:

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

这工作得很好,但现在我在 64 位操作系统上运行(但我的同事和构建服务器仍然在 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>

如果操作系统(不是当前的构建配置)是 64 位,我是否可以设置一个条件,以便我可以设置它?

最佳答案

有一个注册表项可以告诉您当前操作系统的位数。以下是我在 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>

关于msbuild - 在MSBuild中找出当前操作系统的 "Bit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505285/

相关文章:

c - x64 帧指针应该指向哪里,为什么指向? ( Windows x64 ABI)

visual-studio - Visual Studio 2010 不允许我调试 Web 应用程序

c++ - 从 32 位迁移到 64 位 - OpenCV/MinGW/Eclipse

visual-studio-2010 - Visual Studio中的BeforeBuild和AfterBuild Target无法触发

jenkins - MSBuild - Jenkins - Nuget 集成

dll - 为什么 MSTest 不复制引用的项目库?

msbuild - 测试是否定义了MSBuild属性?

.net - 对 csproj 的更改未生效

MSBuild:如何创建全局属性?

visual-studio-2010 - 为什么有些Web.config转换将标记化为SetParameters.xml,而另一些却没有?