今天刚配置完tfs2015+vs2013的持续集成(自动构建+自动发布),记录一下走过的坑。

tfs2015和tfs build server是之前其他同事装的,略去不讲,列一下几个坑以及埋坑方法。

前提

微软TFS的持续集成配过一次后会觉得真的还是蛮方便的,当然前提是你对它的构建工具和VS足够了解。

首先,打开vs2013的 团队资源管理器 ,连接上TFS后,在团队资源管理首页上可以看到 生成 ,点击进入生成后,新建生成定义。

自动生成的配置不麻烦,略去不表,参考创建或编辑生成定义,关键是生成后的自动发布,重点在 过程 的配置上。

过程的配置重点

过程这一节的配置,使用默认模板,重点在于配置:

  1. Build中的Projects 指定需要生成的解决方案;
  2. Build中的Configurations 指定要使用的配置,如 Any CPU|Release 如果配置名与默认可选的不同,可以直接编辑修改
  3. Build中的Advanced 设置msbuild的参数选项;
  4. Test中的Advanced 可以选择关闭测试项目的执行,disable tests;

其中msbuild的参数选项,是首次配置最迷糊的地方,其实这里就是用/p 设置一些msbuild脚本要用到的变量值。

/p:DeployOnBuild=True /p:PublishProfile=yourpublishprofile /p:AllowUntrustedCertificate=True /p:VisualStudioVersion=12.0  /p:Username=yourusername /p:Password=yourpassword

这里指定了vs版本号,就要提一下,生成服务器上需要安装vs,可以只选web开发相关功能安装,vs2013大概也要9G空间。

明明是类库项目,为啥msbuild在找发布配置文件?

这个坑,其实不容易遇到,只要是按部就班新建类库项目的话。(我也不知道为啥我们团队的类库项目会遇到这个情况)

症结在类库项目csproj文件的内容上,用记事本或其他文本编译器打开类库项目的csproj文件,在其中搜“Microsoft.WebApplication.targets”,应该是一个或两个import配置节,删除即可。

targets文件和csproj文件其实都是定义了一些msbuild的流程任务,而Microsoft.WebApplication.targets文件是为web应用准备的,一般类库项目是不该有这个配置的。

error MSB4166: Child node "3" exited prematurely

中文提示应该是 “字节点 3 过早退出,正在关闭”。

这个问题的处理,资料真不多,找了半天,最后终于看到一篇文章,是要设置msbuild的平台,由anycpu 改为 x86。

指定非官方的nuget源

为解决方案启用nuget restore后,如果不使用官方的源,可以在.nuget目录下的NuGet.targets中配置 PackageSource。

为何发布后,web.config 的配置转换没起作用?

参考 过程的配置重点 第二条

Build中的Configurations 指定要使用的配置: Any CPU|YourConfigName

LibGit2Sharp报异常,git2-msvstfs.dll中 git__thread__init 不存在

这个处理了很久,解决方式是在 msbuild 参数上加上 /p:GenerateBuildInfoConfigFile=false

其他问题

如果一个解决方案中有多个项目需要发布,那么发布的配置文件名必须一致。

webdeploy发布工具的使用也很重要,回头另开一帖。

参考

  1. MSBuild用法参考
  2. 创建或编辑生成定义

[2015-10-11]tfs2015 vs2013 配置持续集成的更多相关文章

  1. Jenkins+Gitlab+自动化测试配置持续集成

    Jenkins安装在win7上 GitLab安装在docker上 需求:本地提交自动化测试代码在gitlab上后,jenkins自动构建,拉下新提交的自动化代码,并且运行 参考的链接: https:/ ...

  2. 2015.10.11(js判断鼠标进入容器的方向)

    判断鼠标进入容器的方向 1.前几天在万圣节专题项目中用到了鼠标坐标page事件,随着鼠标背景图片移动形成有层次感的效果,但page事件在IE低版本不支持,所以还要做兼容.在研究page事件同时无意中想 ...

  3. Gitlab Jenkins WebHook 持续集成配置踩坑记

    Jenkins相关介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 目的 配置Gitla ...

  4. 漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃monkey日志

    漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃日志 1.APP崩溃率标准 开发或测试app的同学,对于app崩溃肯定非常熟悉,频繁的线上崩溃属 ...

  5. Android 项目配置 gitlab-ci 持续集成

    一.项目根目录下创建一个 .gitlab-ci.yml 文件 然后在 .gitlab-ci.yml 中配置持续集成的脚本: 脚本配置详细可以看: Configuration of your jobs ...

  6. 【OF框架】在Azure DevOps中配置项目持续集成CI服务,推送镜像到Azure容器注册表

    准备工作 开通Azure账号,具有开通服务权限,关键是里面要有钱. 开通Azure DevOps,能够创建组织和项目. 具备一定的DevOps知识,了解CICD概念.Docker基本操作. 一.创建& ...

  7. 有手就行3——持续集成环境—maven、tomcat、安装和配置

    有手就行3--持续集成环境-maven.tomcat.安装 持续集成环境(5)-Maven安装和配置 持续集成环境(6)-Tomcat安装和配置 持续集成环境(5)-Maven安装和配置 在Jenki ...

  8. 使用VSTS/TFS搭建iOS持续集成环境

    TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...

  9. Jenkins持续集成 & .NET

    最近受累于测试环境每次发布都很麻烦,而且我们有多个测试环境,因此专门抽时间做了Jenkins的配置和研究. 折腾了两天终于绿灯以后,先来个截图,BlueOcean UI还是很nice的. 环境搭建 找 ...

随机推荐

  1. Pivot Table系列之展开/折叠用法 (Expand/Collapse)

    1.遇到的问题: PivotTable中本来已经展开的维度的Hierarchy(层次结构),在切换切片器的数据集时,层次结构就折叠在一起了:没有按照之前的方式展开显示. 2.在做成PivotTable ...

  2. Apache Kafka - 介绍

    原文地址地址: http://blogxinxiucan.sh1.newtouch.com/2017/07/12/Apache-Kafka-介绍/ Apache Kafka教程 之 Apache Ka ...

  3. Android Handler 机制 - Looper,Message,MessageQueue

    Android Studio 2.3 API 25 从源码角度分析Handler机制.有利于使用Handler和分析Handler的相关问题. Handler 简介 一个Handler允许发送和处理M ...

  4. year:2017 month:8 day:3

    2017-08-03 JAVAse 1:静态变量和成员变量的区别: 所属不同:静态变量属于类,所以也称为类变量 成员变量属于对象,也称为实例变量 内存中位置不同:静态变量存储余方法区的静态区 成员变量 ...

  5. C语言_第一讲_C语言入门

    一.C语言的简介 1.C语言是一个标准,而执行标准的时候产生的自动化程序则是编译器2.了解:1983年美国国家标准化歇会(ANSI)制定了C语言标准.C语言的特点:3.代码的可移植性(理想状态是代码可 ...

  6. java异常捕获的一点感悟

    class Annoyance extends Exception {} class Sneeze extends Annoyance {} class Human { public static v ...

  7. python学习之核心数据类型

    python核心数据类型 对象类型 例子 数字 1234,-345 字符串 'spam' 列表 [1,3,'ds'] 元组 (1,'spam',6) 字典 {'name':'lili','age':1 ...

  8. 菜鸟装逼指南--linux内核中听过就能记住的概念

    打算给我们部门弄个内部分享.发现大家对一些底层知识的认知停留在一句一句的,比如听说JVM使用-XX:-UseBiasedLocking取消偏向锁可以提高性能,因为它只适用于非多线程高并发应用.使用数字 ...

  9. Get host name and port(Object-c)

    /************************************************************************** @param pChHostName: [out ...

  10. Hadoop-2.8.0 开发环境搭建(Mac)

    Hadoop是一个由Apache基金会开发的分布式系统架构,简称HDFS,具有高容错性.可伸缩性等特点,并且可以部署在低配置的硬件上:同时,提供了高吞吐量的数据访问性能,适用于超大数据集的应用程序,以 ...