在32位Windows(Teamcity)上编译x64的方法

7

我们的Teamcity代理目前运行在32位操作系统上,这一直不是问题(我们现在有一个x64应用程序需要在其中构建)。

我听说在32位操作系统上可以编译x64应用程序,但我从未尝试过。有哪些步骤是必需的,可以让Teamcity使用MSBuild构建特定的x64项目呢?

当我将项目的MSBuild属性“运行平台”设置为x64时,我的代理会给我以下警告:“未满足要求:DotNetFramework4.0_x64存在”。

顺便提一下:我们最终会将代理移动到64位操作系统上,但我希望有一个短期解决方案。


2
永远不要明确选择x64作为平台目标,而是始终选择AnyCPU。 - Hans Passant
1个回答

15

我认为在TeamCity中的Run Platform是指要使用哪个版本的MSBuild,它会在C:\Windows\Microsoft.NET\Framework64\v4.0.30319文件夹中查找MSBuild.exe,当你使用32位的Windows版本时,如果该框架未安装,则无法找到。然而,32位版本的MSBuild可以调用C#编译器,在你的32位机器上仍然可以生成x64程序集。

你需要做的是执行一个Run Platform来进行x86环境的设置,并将/property:Platform=x64作为命令之一传递。如果你没有x64配置,你可以尝试传递/property:Platform="Any CPU"。但是,只有当你的项目中引用的所有程序集都设置成"Any CPU",这种情况才能保证正常工作。此外,你还可以创建一个自定义配置,将所有的程序集都设置为x64,并通过命令行传递给MSBuild。

请注意,如果你的项目中包含C++代码,你需要确保已经安装了x64编译器,因为默认情况下它们可能未安装。


这正是我在寻找的。只不过,它应该是/Property:Platform=x64而不是/Property:Configuration=x64。 - Benoittr
噢,是我搞错了,我会更新答案的。配置用于Release/Debug,平台指定CPU。 - Christopher Currens

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