【问题标题】:Building on Windows XP, when development is on VS2012?在 Windows XP 上构建,什么时候在 VS2012 上开发?
【发布时间】:2013-01-28 11:08:23
【问题描述】:

我们计划从 Visual Studio 2005 迁移到 Visual Studio 2012 (Visual-C++-11)。 (如果我们能提供帮助,我们非常想跳过 2010 年,因为新版本已经存在并且提供了更好的 C++ 体验。)

但我们遇到了一个小障碍:

我们的构建服务器仍然运行 Windows 2003r2(都在专用虚拟机中),并且由于混乱的工具支持/问题,我们无法将构建服务器升级到更新的操作系统。

开发人员现在大多已切换到 Windows7,因此移动剩余的 Windows XP 开发人员框应该不会造成问题。

由于 VS2012 只在 Win7 上运行,我们想知道我们是否可以利用它的工具(C++ 编译器、C#)并仍然在 W2k3 构建服务器上进行完全等效的构建 - 毕竟,我们并不真的需要 VS GUI ,只需从 VS2012 构建 C++ 和 C# 项目。

我们有哪些选择?

SDK(7.1?8?)编译器 + msbuild 命令行能让我到任何地方吗?

【问题讨论】:

  • 这是一个有 10 年历史的操作系统。你还要等多久才能更新?顺便说一句,你可以让它启动另一个操作系统的专用虚拟机不是很重要吗?
  • @Hans:不,VM的重点是Windows2003在VM内部,我不必关心新服务器硬件是否支持它,但它会继续在内部运行虚拟机。 (我担心几年。)

标签: visual-c++ msbuild visual-studio-2012 migration


【解决方案1】:

在项目属性页中,有一个选项“平台工具集”允许您选择项目的兼容性。因此,您可以在 VS2012 中工作,但使用“VS2008 编译器”构建它

【讨论】:

  • 抱歉,您误解了这个问题。我需要查看 Win-XP/2003 上的源代码,但是 VS2012 甚至无法启动/安装,所以我需要另一种选择在那里构建这些 VS2012 源代码。
  • 好的,所以你想在 Seven 或 XP 上打开项目。 VS2012 项目与旧版 VS 不兼容。唯一的办法是在 XP/2k3 和 Seven 上使用 VS2010。
  • 正如我所说,我不想在 IDE 中打开它们——我想编译它们。据我所知,您不需要 IDE 来编译 msbuild 项目。
【解决方案2】:

这是我们的工作:

使用CMake

CMake 允许您为自己的操作系统创建构建系统。因此我们可以在 VS2005、VS2010 和 Eclipse、XCode 等中使用相同的代码。

您可以做类似的事情:在旧机器上安装 VS2005,让 CMake 从源代码为您创建项目。在您较新的机器上,您可以使用 CMake 生成 VS2012 解决方案(我不知道他们是否支持 2012,因为我们还没有使用 2012)。

这里的一个重要专业人士是:如果您计划迁移到任何其他 IDE 甚至 Linux,您只需重新运行 CMake 并在这些环境中轻松编译您的源代码。

一个大骗局:您必须开始阅读有关 CMake 的内容并为您的所有项目创建 CMakeLists.txt(可能需要做很多工作,具体取决于项目的数量、源代码文件的数量每个项目、特定的编译器选项、链接器选项等)

【讨论】:

  • 您是否知道 VC++11 编译器的构造在 VC++8 下无法编译? CMake 根本没有帮助我,因为我在构建服务器上需要与用于构建项目的编译器相同(或兼容)的编译器。
  • 对不起,我没有看到它。如果您使用 VC++11 的特定扩展,那么这当然不起作用。
  • 我不使用特定的 VC11 扩展,我会使用它提供的所有 C++11 功能,这些功能显然不在 VC8 中。 (至于扩展——鉴于 Windows 的代码库很重,“跨平台”对我们来说只是一个廉价的笑话。)
【解决方案3】:

我们的构建服务器仍然运行 Windows 2003r2(全部在专用 虚拟机),并且由于混乱的工具支持/问题,我们没有 可以将构建服务器升级到更新的操作系统。

嗯。这个问题没有什么结果。我们最近重新评估了这个问题,我看到了两个选项(我还没有尝试过):

  • 只需在受支持的操作系统 (Win7) 上进行完整的 VS 安装,压缩整个 VS+WinSDK 目录(以及位于 %WINDR% 下某处的必需的 runtme DLL),然后尝试是否可以得到那个东西在基于 XP 的操作系统上工作。可能会奏效。如果你问我,这不是一个好主意。
  • 拆分构建过程以将构建分布到多个操作系统,以便我们可以使用仅在其中一个操作系统上受支持的工具。 -- 这实际上听起来比实际要复杂得多。我们已经在几个 Jenkins 作业中运行了我们的构建,所以我应该能够让它工作。 (无论如何,所有构建节点都已经是虚拟机,因此添加更多虚拟机并不是什么大问题。)

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多