不安装Visual Studio如何使用Microsoft C++编译器

14

在我们的团队中,开发人员都拥有Visual Studio 2012,并且我们还使用TFS2012构建。出于可管理性和节省空间的原因,我们不会在(许多)构建代理上安装Visual Studio。目前这对C#项目(csproj)已经有效了。

现在我们想要添加对C++项目(vcxproj)的支持。这些项目在开发人员的计算机上可以构建,但是在构建代理上无法构建 - 我们会得到以下错误信息: X.vcxproj(31,3): error MSB4019: 找不到导入的项目"C:\Microsoft.Cpp.Default.props"。请确认在<Import>声明中路径正确,并且磁盘上存在该文件。

我想这是因为C++编译器和目标只安装在VS中。

  1. 是否有一种方法可以只检入编译器和目标,并在我们的common.targets文件中设置某些属性来指向它们?
  2. 如果失败,那么我需要在每个构建代理上安装哪些最少的组件以支持C++编译?我找到的最简单的是VS Express,但对我来说仍然过于复杂。

你有检查过它是否是一些愚蠢的问题,比如坏的解决方案文件吗? - Shark
是的,我的机器上安装了VS,因此有c:\Program Files (x86)\MSBuild\Microsoft.Cpp。构建代理没有那个文件夹。 - Jonathan
1
你在构建代理上安装了msbuild吗?另一件需要的事情是将$(win_sdk)\include作为附加包含目录。 - MadScientist
2个回答

14

对于C#来说很简单,编译C#程序的能力是内置在框架中的,System.CodeDom,所以只需安装.NET就足够了。但对于C++来说就不一样了。至少需要安装Windows SDK,占用大约半个G的空间。在8.0之前的SDK版本中,这包括了C++编译器。

然而,接下来你将会为如何在那台机器上获取类库而烦恼。比如ATL和MFC。你不能简单地复制它们,那样会违反许可证。更糟糕的是,微软已经改变了他们的商业模式。自从VS2012以来,他们转向了快速发布周期,每几个月就会发布更新。这些更新是不能忽视的,它们添加了相当重要的部分来实现C++11。绝对是你的C++程序员想要使用的那种。

一般来说,C++编译器的SDK版本与VS版本不同步,Windows团队没有义务将其更新。构建机器绝不能做的一件事情是运行与程序员使用的构建工具不同的一组构建工具。这会导致构建失败,开发人员无法重现,成为一个非常棘手的争议点。除非你喜欢让自己的生活变得复杂,否则信息很清楚。不要这样做,安装VS。

更新:自从撰写这篇文章以来,微软已经提出了一个解决方案。发布了“Visual Studio构建工具”包。当前下载页面在这里,但它会移动,所以谷歌产品名称来追踪它。许可证允许任何拥有有效的Visual Studio版本许可证或想要使用它来测试/发布开源产品的人使用。


0
这个问题在早期的TFS版本中也存在。据我所知,唯一的解决方案是将目标复制到代理上。只需创建此文件夹的副本即可:

MSBuild\Microsoft\VisualStudio\v11.0\*.*

至少你不必在代理上安装Visual Studio(除非你想自动化设置项目创建)。

错误也在这里描述了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接