在32位版本的Windows上编译x64(Teamcity)

时间:2011-10-21 21:55:19

标签: c# .net msbuild 64-bit teamcity

我们的Teamcity代理现在在32位操作系统上运行,直到现在这还不是问题(我们现在有一个x64应用程序可以在那里构建)。

我听说可以在32位操作系统上编译x64应用程序,但我从来没有这样做过。让Teamcity在x64中构建特定项目所需的步骤 - 理想情况下使用MSBuild?

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

作为旁注:我们最终会将代理移动到64位操作系统,但我想要一个短期解决方案。

1 个答案:

答案 0 :(得分:15)

我认为TeamCity中MSBuild的Run Platform是针对哪个版本的MSBuild使用的,当你使用的是32位版本时,它正在C:\Windows\Microsoft.NET\Framework64\v4.0.30319文件夹中查找MSBuild.exe Windows,并没有安装该框架。但是,32位版本的MSBuild可以调用仍然可以生成x64程序集的C#编译器,即使在32位计算机上也是如此。

您要做的是为x86执行Run Platform,但将/property:Platform=x64作为您的命令之一传递。如果您没有x64配置,则可以考虑尝试传递它/property:Platform="Any CPU"。但是,只有在项目中引用的所有程序集都设置为任何CPU时,才能保证任何CPU都能正常工作。或者,您可以创建一个自定义配置,其中所有程序集都指定为x64,并通过命令行将其传递给MSBuild。

请记住,如果您的任何项目都是C ++,则需要确保安装了x64编译器,因为我认为它们默认不会安装。