在源代码管理中存储Windows SDK?

时间:2013-04-15 14:09:33

标签: visual-studio version-control sdk msbuild build-automation

问题在最后 - 让我首先提出上下文:

使用 Visual Studio 时我们面临的一个问题是确保团队中的每个人都使用相同版本的SDK。

一个典型的问题是让某人使用不同的 Direct X SDK 版本导致代码的不同行为,或者有人升级到更新的平台/ Windows SDK以便使用某些新的API,如果他们仍然使用以前的版本,则代码在其他程序员机器上失败。

我们用来解决其他中间件问题的方法是在我们的源代码控制系统中放置整套库,包含文件,工具链等,并让我们的项目使用这些,所以没有人有安装任何东西。 我们还设法使用早期版本的Direct X SDK,但由于SDK和工具链之间的密切联系,我们总是遇到Windows / Platform SDK的问题。

由于我们现在必须同时支持VS2010和VS2012,并且必须支持从Windows XP到Windows 8的目标,我们必须支持 v100 v110 v110_xp 工具集。

这意味着我们需要所有相关的编译器和相应的SDK,这些都在我们的开发人员机器和构建系统上:维护成本过高,特别是考虑到随机Windows更新和.net框架版本通常会破坏msbuild

所以问题是:

  • 是否可以让Visual Studio使用未安装的工具集和SDK,而是让它使用正常VS安装位置之外的某些文件夹中的可用内容?

  • 奖金问题:如果可行,是否可以在不更改机器上任何本地安装的配置文件的情况下执行此操作 - 即:在解决方案/项目或属性表中包含所有内容 - 如果我们改变源控制系统上的结构,我们没有更新每台机器?

谢谢:)

2 个答案:

答案 0 :(得分:0)

考虑到这些工具安装的复杂程度,这听起来太复杂了。我会通过投资一些PowerShell脚本来解决这个问题,这些脚本会查看已安装的工具和工具路径并“警告”安装。检查所有安装版本(包括补丁和更新)会相对容易。您可以在夜间运行,也可以作为构建的一部分运行。此外,您可以比较不同安装的各个方面,例如安装在开发人员工具箱上的工具版本与构建服务器。

这会给你90%的痛苦值。

答案 1 :(得分:0)

您描述的问题无法通过您的方法解决。您实际需要的是构建服务器和完成的定义,包括使用使用构建服务器构建的二进制文件。您还需要一个测试套件作为构建定义的一部分,其中包含与所使用的构建环境相关的一些不变量。