当前位置:  开发笔记 > 编程语言 > 正文

在msbuild中使用32位"Program Files"目录

如何解决《在msbuild中使用32位"ProgramFiles"目录》经验,为你挑选了4个好方法。

在64位版本的Windows中,32位软件安装在"c:\ program files(x86)"中.这意味着你不能使用$(programfiles)来获取(32位)软件的路径.所以我需要一个$(ProgramFiles32)来克服我的MSBuild项目.我不想根据运行的操作系统更改项目.

我有一个解决方案,我会发布,但也许有一个更容易/更好的方式.



1> Ruben Bartel..:

在MSBuild 4.0+中,有一个$(MSBuildProgramFiles32)属性,你可以自信地直接使用它(特别是如果你准备把一个ToolsVersion="4.0"放在文件的顶部以保证它可用,如果不是则快速失败).

如果您不是并且需要能够做到正确的事情即使在MSBuild 2.0或更高版本的环境中执行(即回到VS 2005环境),完整的解决方案是:


    
    $(MSBuildProgramFiles32) 
    
    $(ProgramFiles%28x86%29)

    
    $(ProgramFiles) (x86)

    
    $(ProgramFiles)

不幸的是渐进增强/填充工具的压倒一切的MSBuild保留属性名称MSBuildProgramFiles32通过无论是或者被拒绝的MSBuild 4.0+,因此不能作出更为简洁并且还支持.NET 2.0.



2> wimh support..:

我的解决方案是查看"c:\ program files(x86)"是否存在,如果存在,则认为这是64位操作系统.否则使用正常的程序文件目录:


  $(PROGRAMFILES) (x86)
  $(PROGRAMFILES)

我可以像这样使用它



这将在非英语版本的Windows上崩溃,因为程序文件并不总是被称为程序文件.
您需要检查名为%ProgramFiles(x86)%的环境变量.如果存在,那么你就是64位操作系统,这就是你想要的路径.如果它不存在,则使用%ProgramFiles%指定的路径.
使用Condition ="Exists('$(PROGRAMFILES)(x86)')"从.net 4.0.21006在msbuild中搜索C:\ Program Files(x86)(x86)

3> Rory MacLeod..:

在MSBuild 4.0中,$(MSBuildProgramFiles32)将为您提供32位Program Files目录.



4> 小智..:

尝试 "$(MSBuildExtensionsPath32)\.."

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有