MSBuild项目有没有办法确定运行32位还是64位版本的MSBuild?

3

在找到关于64位版本的MSBuild尝试加载32位扩展的我的问题的答案后,现在有必要确定运行的是64位还是32位版本的MSBuild,以便我可以加载正确版本的DLL。

我可以将$(MSBuildBinPath)变量与已知路径列表进行比较,但如果MSBuild从某些非标准位置运行,则无法正常工作。这不是一个优雅的解决方案。

是否有一种可靠的方法来确定当前运行的MSBuild(或其他托管MSBuild引擎的进程)是32位还是64位?


你能提供更多关于你正在尝试做什么,或者是什么在调用MSBuild的细节吗?这很重要,因为编程调用是基于对Microsoft.Build.x dll的引用。 - Taylor Bird
在这种情况下,它取决于你调用的哪个版本。如果你从C:\windows\microsoft.net\framework...文件夹中调用MSBuild.exe,那么你正在使用32位版本。如果是从“Framework64”中调用,则是64位版本。 - Taylor Bird
1
这一点都不有帮助。我有一个 MSBuild 的“项目”文件需要知道,因为它需要根据被调用的方式设置不同的变量。 - Mark
1
完全不是重复的问题。我不需要知道操作系统的位数,我需要知道正在运行的 MSBuild 的位数(即使在 64 位操作系统上也可能是 32 位)。 - Mark
显示剩余2条评论
2个回答

1

是的,我相信这将是唯一的方法......如果有什么不需要全新任务就好了。 - Mark
如果您正在使用MSBuild 4.0,您可以编写一个内联任务(http://msdn.microsoft.com/en-us/library/dd722601.aspx)。这将节省您创建自定义任务程序集的时间。 - Arnold Zokas

-1

有一个相关问题在在MSBuild中查找当前操作系统的"位数"。在那个问题中,Blindy给出了一个答案:


在64位操作系统上,定义了以下变量:
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)

所以只需测试 ProgramFiles(x86) 是否为空,如果为空,则使用 ProgramFiles


1
我不关心当前操作系统的位数,我需要当前 进程 的位数。 - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接