【问题标题】:msbuild compiles 32bit on one machine and 64bit on anothermsbuild 在一台机器上编译 32 位,在另一台机器上编译 64 位
【发布时间】:2014-02-25 09:12:08
【问题描述】:

我目前遇到了一个奇怪的问题。我有一个构建服务器编译版本的解决方案,一个特定的解决方案在构建服务器上编译为 32 位,它不应该编译,而所有其他的都构建为 Any 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

32bit 在哪里有在构建服务器上设置的 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

【问题讨论】:

  • 我认为您正在为所有这些项目构建解决方案?您是否在解决方案的配置管理器属性中检查了构建平台?
  • 使用哪个版本的 MSBuild(32 位或 64 位)在您的构建定义的 MSBuild 平台属性中设置
  • 是的,这是一个正在构建的解决方案......我会看看属性
  • 在哪里可以找到构建定义的 MSBuild 平台属性?
  • 这是 VS2010 的灾难。您可以通过将大锤带到 Build + Configuration Manager 对话框并删除所有这些无意义的平台名称来修复它。只有 AnyCPU 对托管项目有意义。现在您可以正确更改真正重要的设置:项目+属性、构建选项卡、平台目标。对于 Debug 和 Release 配置,将其设置为 AnyCPU。强烈建议更新您的 VS 版本,这个愚蠢的 VS2010 错误已修复。

标签: c# visual-studio-2010 msbuild


【解决方案1】:

找到解决方案,确保项目文件是正确的所有平台的任何 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 服务器上的构建 exe 文件表明它已正确编译。所以现在的问题是 WIX 项目。所以一些额外的信息,为了解决 wix 项目中的问题,我编辑了 exe 的 proj 文件,添加了一个 Release x86 属性组,但将 PlatformTarget 设置为 AnyCPU。 这意味着从 WIX 请求的输出路径存在 (Release|x86) 但正在编译为 AnyCPU。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2012-06-09
    • 2011-10-31
    • 2011-02-14
    • 2012-11-18
    • 2013-06-13
    • 2019-09-20
    相关资源
    最近更新 更多