在不安装 Visual Studio 的情况下使用 Microsoft C++ 编译器

Posted

技术标签:

【中文标题】在不安装 Visual Studio 的情况下使用 Microsoft C++ 编译器【英文标题】:Using Microsoft C++ compiler without installing Visual Studio 【发布时间】:2013-03-14 12:55:50 【问题描述】:

在我们的团队中,开发人员都有 Visual Studio 2012,我们也使用 TFS2012 构建。出于空间和可管理性的原因,我们不在我们的(许多)构建代理上安装 Visual Studio。到目前为止,这已与 C# 项目 (csproj) 一起工作。

现在我们要添加对 C++ 项目 (vcxproj) 的支持。这些构建在开发者的机器上,而不是构建代理上——我们得到: X.vcxproj(31,3): error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

我想这是因为 C++ 编译器和目标仅与 VS 一起安装。

    有没有办法只检查编译器和目标,并在我们的 common.targets 中设置一些属性来指向那里? 如果不这样做,我需要在每个构建代理上安装多少才能支持 C++ 编译?我能找到的最少的是 VS Express,这仍然太合我的胃口了。

【问题讨论】:

你检查过它是不是像糟糕的解决方案文件这样愚蠢的东西吗? 是的。我的机器安装了VS,因此有c:\Program Files (x86)\MSBuild\Microsoft.Cpp。构建代理没有那个文件夹。 您是否在构建代理上安装了 msbuild?我们需要的另一件事是 $(win_sdk)\include 作为附加的包含目录。 【参考方案1】:

对于 C# 来说很简单,编译 C# 程序的能力是在 System.CodeDom 框架中与生俱来的,所以只需安装 .NET 就足够了。对于 C++ 而言并非如此。您至少需要安装 Windows SDK,半场演出。这包括低于 8.0 的 SDK 版本中的 C++ 编译器

但是,接下来您会担心如何找到在该机器上获取类库的方法。例如 ATL 和 MFC。你不能只是复制它们,这违反了许可证。更糟糕的是,微软不再像过去那样做生意了。自 VS2012 以来,他们切换到快速发布周期,更新以几个月的方式发布。这些不是您可以忽略的更新,它们添加了相当大的块来实现 C++11。绝对是您的 C++ 程序员想要使用的那种。

一般而言,C++ 编译器的 SDK 版本只是与 VS 版本不同步,Windows 团队没有义务保持更新。构建机器应该永远做的一件事是运行一组与程序员使用的构建工具不同的构建工具。这使得开发人员无法复制的构建中断成为一个令人讨厌的争论点。除非你喜欢让你的生活变得复杂,否则信息是明确的。不要这样做,安装VS。

【讨论】:

【参考方案2】:

早期 TFS 版本也存在此问题。据我所知,唯一的解决方案是将目标复制到代理。创建此文件夹的副本就足够了:

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

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

错误也得到了描述here。

【讨论】:

以上是关于在不安装 Visual Studio 的情况下使用 Microsoft C++ 编译器的主要内容,如果未能解决你的问题,请参考以下文章

在不安装 Visual Studio 2010 的情况下使用 vc100 平台工具集?

在不安装 Visual Studio 的情况下在机器上调试代码

如何在不安装 Visual Studio C++ 的情况下安装人脸识别

如何在不使用 Visual Studio 的情况下使用 ASP.NET MVC 实现站点?

如何在不使用 Visual Studio 的情况下使用 ASP.NET MVC 实现站点?

如何在不删除目标文件夹内容的情况下使用 Visual Studio 2008 中的“发布”功能?