Visual Studio - 如何自动化构建过程?

时间:2016-08-10 16:21:56

标签: c++ visual-studio build visual-studio-2015

我有一个包含许多项目的C ++解决方案。在编译期间,我需要在Win32模式下构建部分项目。然后执行几个shell命令。然后在x64模式下构建几个项目。然后再执行几个shell命令。然后,最后,在Win32模式下再构建一个项目。

我已经厌倦了一次又一次地手动执行此操作)如何自动完成所有这些步骤?

我使用Visual Studio 2015

2 个答案:

答案 0 :(得分:3)

我建议将MSBuild XML自动化和Jenkins结合使用。详细说明:

MSBuild:它附带Visual Studio。您需要访问VS命令提示符才能访问它。在VS命令提示符下,如果您键入“MSBuild your_project.vcproj”,它将为您构建它。

MSBuild XML文件:您可以创建一个简单的XML文件并将其传递给MSBuild。这将极大地帮助您组织构建过程。这是一个很大的主题,但是,您可以将其视为Microsoft样式的makefile / build系统(即使Microsoft具有nmake)并且更加方便。您可以定义目标,设置变量,放置条件,并行化构建,设置操作以调用shell命令。一个非常简单的看起来像:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <CPPProject>your_cpp_project.sln</CPPProject>
    <powershell_execute>powershell.exe -executionpolicy bypass -command</powershell_execute>
    <UtilityScript>utility.ps1</UtilityScript>
  </PropertyGroup>

  <Target Name="Build">
    <Exec Command="msbuild.exe $(CPPProject) /p:Configuration=Release /p:Platform=Win32" />
    <Exec Command="msbuild.exe $(CPPProject) /p:Configuration=Release_x64 /p:Platform=x64" />
    <Exec Command="$(powershell_execute) $(UtilityScript) args" />
  </Target>

    <Target Name="Clean">
        <!-- DO YOUR CLEANING HERE-->
  </Target>

</Project>

Jenkins:安装后,它将作为具有嵌入式HTTP服务器的Windows服务运行。您可以通过localhost:8080快速访问它。 Jenkins本身就是另一个话题,但我发现自动化命令并将它们组织为作业定义非常方便。

额外的酱(Powershell&amp; MSBuild扩展):由于您可以从MSBuild或Jenkins调用命令,您可以随时使用Powershell(如果需要,您也可以在其中内联C#代码)我找到了这非常有用,我需要快速,轻松地实现自定义逻辑,例如在每次发布之前递增次要版本等。请注意,还有扩展包用于丰富MSBuild XMLs的功能。

Jenkins和TFS作为替代方案的缺点: Jenkins通常非常方便。 Windows的主要缺点是控制台输出的颜色并不简单,但可以处理它。总的来说,我发现它非常稳定。另一方面,TFS已经是微软的解决方案,我不确定它的许可选项,但它也可以替代Jenkins。在这种情况下,您将更多地依赖于MSBuild XML文件。 TFS 2013对我来说的一个缺点是,由于与微软的http.sys存在一些冲突,因此在网络运营中并不总能正常工作,这令人非常失望。但是,我还没有检查过TFS2015

一般建议:由于它是一个集中解决方案,我强烈建议在MSBuild XML文件中实现大部分逻辑,因为这将使您的构建系统也可以通过命令行轻松调用易于在Jenkins,TFS或其他系统之间切换

其他说明:

  1. 如果它只是MSVC 2015,您可能会避免安装VisualStudio,因为MSVC2015具有独立版本:https://blogs.msdn.microsoft.com/vcblog/2015/11/02/announcing-visual-c-build-tools-2015-standalone-c-tools-for-build-environments/

  2. 如果你采用Jenkins方式,首先需要处理的是访问Visual Studio命令提示符。在这种情况下,请参阅:How do I write a build batch script that runs vcvars32.bat, and then continues with the build?

答案 1 :(得分:0)

对于同一任务,我使用TeamCity配置了本地构建服务器。它完全符合您的要求。以下是instruction,了解如何创建构建配置。