一、前言

由于公司要求项目需要走CI构建平台,抛弃掉之前的人工编译打包方式,所以需要调研一下项目怎么通过命令行编译出产物。

二、准备工作

  1. 在构建机器上安装vs(本文示例为vs2017)
  2. 将代码上传版本控制仓库(本文示例为Gitlab),并确保构建机器可以正常访问并下载源代码
  3. 确保构建机器可以正常编译目标项目,最快捷的方案就是在构建机器上跑一下
  4. 修改项目的编译配置及平台,例如我设置了Release+CI作为CI构建用的配置,并把输出路径改为了..\CIResult\

三、编写构建命令

  1. 找到vs的安装路径,找到devenv.exe,例如D:\VS2017\Common7\IDE\devenv.exe
  2. 明确自己需要编译的解决方案的名称,例如:ABC.sln
  3. 明确自己需要使用的编译设置,例如前文设置好的:Release + CI
  4. 编写编译命令,例如:"D:\VS2017\Common7\IDE\devenv.exe" devenv "ABC.sln" /rebuild "Release|CI" /out courtClient.log
  5. 执行命令,就可以到..\CIResult\去获取产物了,如果嫌弃文件夹麻烦,可以在编译完成后再加一句命令WinRAR a -r ABC.zip CIResult\*来打个压缩包。

四、注意事项

  1. 如果项目中使用了nuget管理引用的组件,建议把packages文件夹加入源代码仓库中,因为我不知道怎么让vs在编译前自动下载包并还原,只能用这个笨方法了。附上git的文件包含脚本,打开.gitignore文件加上一行!/packages/*
  2. 编译的错误日志打在了courtClient.log文件里

五、结束

自己摸索的,也踩了些坑最后总结出的方法,可能不是很合理,希望大佬们如果有更好的方法可以批评指正。

VS编译命令的更多相关文章

  1. Android 编译命令 make j8 2>&1 | tee build.log 解释

    在编译Android的时候,经常看到这样的命令 make  -j8 2>&1 | tee build.log  其中 make 是编译命令, -j8 这里的 8 指的是线程数量,就是你要 ...

  2. 预编译命令 #if DEBUG

    在控制台程序根据预编译命令: http://www.askapache.com/windows/advanced-batch-scripting.html namespace SXGYCarTrans ...

  3. android的m、mm、mmm编译命令

    android的m.mm.mmm编译命令的使用 android源码目录下的build/envsetup.sh文件,描述编译的命令 - m:       Makes from the top of th ...

  4. 【Android】MTK Android 编译命令

    命令格式:./maketek [option] [project] [action] [modules] Option: -t ,-tee :输出log信息到当前终端 -o , -opt=-- : 编 ...

  5. mtk Android 编译命令自定义--添加版本号

    1. alps\build\core\Makefile文件:(参照CUSTOM_BUILD_VERNO) ifeq "" "$(SURPLUS_BUILD_VERNO)& ...

  6. MTK Android 编译命令

    一.Target 编译命令 usage: (makeMtk|mk) [options] project actions [moudles] options:       -t,-tcc         ...

  7. Mtk Android编译命令

    一.输入命令: cbk@YCS:~/work/k6/alps$ ./mk help Usage: (makeMtk|mk) [options] project actions [modules] Op ...

  8. GCC 编译命令

    今天突然被同事问道一个GCC编译命令为的问题,感觉对相应内容生疏了,赶紧整理下相关内容,梳理下相关知识. GCC命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再 ...

  9. 【转】Android源代码编译命令m/mm/mmm/make分析--不错

    原文网址:http://blog.csdn.net/luoshengyang/article/details/19023609 在前文中,我们分析了Android编译环境的初始化过程.Android编 ...

  10. android下m、mm、mmm编译命令的使用

    android下m.mm.mmm编译命令的使用 通过查看android源码目录下的build/envsetup.sh文件,可知: - m:       Makes from the top of th ...

随机推荐

  1. sbt安装

    使用 Scala 编写的程序需要使用 sbt 进行编译打包,官网sbt下载解压 在解压路径下创建脚本: #!/bin/bash SBT_OPTS="-Xms512M -Xmx1536M -X ...

  2. 力扣(LeetCode)删除排序链表中的重复元素 个人题解

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 这题思路比较简单,同样是快慢针的思路. 用一个整数类型val对应最新的只出现过一次的那个值, 如果节点的下一个节点的值和这个对应则不做别 ...

  3. (线段树)A Corrupt Mayor's Performance Art

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023 题意: 区间更新, 区间询问: 题解: 区间更新, 区间询问, 一共30种颜色, 可用int 来 ...

  4. Future模式的学习以及JDK内置Future模式的源码分析

    并发程序设计之Future模式 一).使用Future模式的原因 当某一段程序提交了一个请求,期待得到一个答复,但服务程序对这个请求的处理可能很慢,在单线程的环境中,调用函数是同步的,必须等到服务程序 ...

  5. java快速复习 一 基础语法

    最近看很多算法书,比较不错的有不少都是java语言描述,所以用一天时间快速研究并整理java  ,参考资料:java入门经典 Call this file "Example2.java&qu ...

  6. Centos下安装PHP ldap扩展

    Centos下安装PHP ldap扩展,有两种方法,仅供参考. 一.在线安装 执行下面命令: 1 yum install PHP-ldap 可能出现的问题: Error: php70w-common- ...

  7. 浅谈.NET中的反射

    一.概述  1.通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象 2.反射机制允许程序在执行过程中动态地添加各种功能 二.运行时类型标识 1.运行时类型标志(RTT ...

  8. Python的import机制

    模块与包 在了解 import 之前,有两个概念必须提一下: 模块: 一个 .py 文件就是一个模块(module) 包: __init__.py 文件所在目录就是包(package) 当然,这只是极 ...

  9. 【Java基础】字面量相加的类型转换

    Java字面量的相加类型转换 1.Java 编译期间(javac),凡是字面量和常量的运算,都会先运算出结果 2.运行期当字符串池中有 String"字面量"时,Java 会直接用 ...

  10. Docker 自建私有Registry 私有仓库

    目录 说明 介绍 原理 搭建 查看配置文件 启动 上传和下载镜像测试 测试上传镜像 测试下载镜像 说明 记录搭建 docker 私有仓库步骤 介绍 docker镜像可以托管到dockerhub中,跟代 ...