在找到关于 64 位版本的 MSBuild 尝试加载 32 位扩展的问题的答案后,我现在有必要确定是 64 位版本还是 32 位版本的 MSBuild 正在运行,以便我可以加载正确版本的 DLL。
我可以对照已知路径列表检查 $(MSBuildBinPath) 变量,但如果 MSBuild 从某个非标准位置运行,这将不起作用。这不是一个优雅的解决方案。
是否有某种方法可以可靠地确定当前运行的 MSBuild(或托管 MSBuild 引擎的其他进程)是 32 位还是 64 位?
在找到关于 64 位版本的 MSBuild 尝试加载 32 位扩展的问题的答案后,我现在有必要确定是 64 位版本还是 32 位版本的 MSBuild 正在运行,以便我可以加载正确版本的 DLL。
我可以对照已知路径列表检查 $(MSBuildBinPath) 变量,但如果 MSBuild 从某个非标准位置运行,这将不起作用。这不是一个优雅的解决方案。
是否有某种方法可以可靠地确定当前运行的 MSBuild(或托管 MSBuild 引擎的其他进程)是 32 位还是 64 位?
您是否考虑过编写一个返回当前进程位数的自定义 MSBuild 任务?
Find the "Bit"ness of the current OS in MSBuild 中有一个相关问题。在那个问题中,Blindy的回答是:
在 64 位操作系统上,定义了以下变量:
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
所以只需测试ProgramFiles(x86)
,如果它是空的,使用ProgramFiles
.