2

Visual Studio(至少 VisualStudio 2010)将目标平台设置存储在*.suo文件中,显然不应受版本控制。

在我的情况下,这对于中央构建来说没有问题,因为它使用 msbuild 上的命令行选项,根据需要强制目标平台为 x86。

但是,如果一位同事检查了我的项目,他最终会为 AnyCPU 构建并对其进行测试。因为他没有*.suo文件,VisualStudio 会使用默认设置。

不管好坏,这位同事都必须测试 x86。

有没有一种简单的方法可以安全地为解决方案保留目标平台?强制使用默认值的环境变量并不完全是我们所需要的,但足够好也足够简单。

4

1 回答 1

6

Visual Studio ... 将目标平台设置存储在 *.suo 文件中

它没有,它将它存储在项目文件中。我创建的一个相关片段:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>x86</PlatformTarget>
    // etc...
  </PropertyGroup>

它配置有项目 + 属性、构建选项卡、平台目标组合框。重复发布配置。只有 EXE 项目的设置很重要,它决定了进程的位数。DLL 没有选择,应该使用 AnyCPU。


你很可能被 VS2010 中一个相当严重的设计错误绊倒了。另一个项目是解决方案平台名称,例如在 Build + Configuration Manager 对话框中突出显示。对于托管项目,这始终是 AnyCPU,VS2010 通过将默认值重命名为“x86”来彻底解决这个问题。当您从早期版本导入项目时,会造成一大堆旧的混乱,从而产生“混合平台”配置。是的,最后一个选择保存在 .suo 文件中。

这与托管项目无关,仅对 C++ 项目重要。该设置选择一组不同的构建工具。64 位编译器和链接器是不同的程序。托管项目不存在的问题是,位数在运行时由抖动选择确定,并且无论所需的平台目标如何,您都使用完全相同的 C# 编译器。

消除此类错误的最佳方法是积极删除平台并仅保留一个。使用 Build + Configuration Manager,选择右上角组合框中的“编辑”条目,然后单击移除无关平台,直到只剩下 AnyCPU。也建议更新你的 VS 版本,这个错误在 VS2012 中再次得到纠正。

于 2014-04-10T17:03:19.907 回答