msbuild在一台机器上编译32位,在另一台机器上编译64位

时间:2014-02-25 09:12:08

标签: c# visual-studio-2010 msbuild

我目前遇到一个奇怪的问题。我有一个构建服务器编译发布的解决方案,一个特定的解决方案编译为32位,它不应该,在构建服务器上,而所有其他都构建为任何CPU(运行为64位)。 当从VS命令提示符使用msbuild时,构建服务器上的构建仍然是32位,但在我的机器上它是64位。这是通过使用corflags(64位编译版本)来检查的:

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 1
ILONLY    : 1
32BIT     : 0
Signed    : 0

32位是否在buildserver上设置了32BIT标志?

我在两台机器上使用相同的msbuild命令:msbuild /p:Congiruation="Release|Mixed Platforms"

Buildserver正在运行Windows 2008 R2标准64位 我的机器是Windows 7 64位

我试图查看构建日志,但还没有找到要查找的内容?

解决方案文件针对给定项目说明以下内容:

{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Any CPU.Build.0 = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|x86.ActiveCfg = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|x86.Build.0 = Release|Any CPU

1 个答案:

答案 0 :(得分:0)

在确保项目文件正确适用于所有平台的任何CPU

之后找到解决方案
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Any CPU.Build.0 = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|x86.ActiveCfg = Release|Any CPU
{2BA1CBC7-6468-4F66-9EF6-F7EE71EC6091}.Release|x86.Build.0 = Release|Any CPU

我开始在WIX项目上获得输出路径没有设置问题。使用corflags检查Teamcity服务器上的build exe文件现在显示它已正确编译。所以问题现在是WIX项目。所以有一点奖励信息,为了解决wix项目中的问题,我编写了exe的proj文件,添加了Release x86属性组,但PlatformTarget设置为AnyCPU。 这意味着WIX中请求的outputhpath存在(Release | x86),但正在编译为AnyCPU。