[2015-10-11]tfs2015 vs2013 配置持续集成
今天刚配置完tfs2015+vs2013的持续集成(自动构建+自动发布),记录一下走过的坑。
tfs2015和tfs build server是之前其他同事装的,略去不讲,列一下几个坑以及埋坑方法。
前提
微软TFS的持续集成配过一次后会觉得真的还是蛮方便的,当然前提是你对它的构建工具和VS足够了解。
首先,打开vs2013的 团队资源管理器 ,连接上TFS后,在团队资源管理首页上可以看到 生成 ,点击进入生成后,新建生成定义。
自动生成的配置不麻烦,略去不表,参考创建或编辑生成定义,关键是生成后的自动发布,重点在 过程 的配置上。
过程的配置重点
过程这一节的配置,使用默认模板,重点在于配置:
- Build中的Projects 指定需要生成的解决方案;
- Build中的Configurations 指定要使用的配置,如 Any CPU|Release 如果配置名与默认可选的不同,可以直接编辑修改
- Build中的Advanced 设置msbuild的参数选项;
- 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发布工具的使用也很重要,回头另开一帖。
参考
[2015-10-11]tfs2015 vs2013 配置持续集成的更多相关文章
- Jenkins+Gitlab+自动化测试配置持续集成
Jenkins安装在win7上 GitLab安装在docker上 需求:本地提交自动化测试代码在gitlab上后,jenkins自动构建,拉下新提交的自动化代码,并且运行 参考的链接: https:/ ...
- 2015.10.11(js判断鼠标进入容器的方向)
判断鼠标进入容器的方向 1.前几天在万圣节专题项目中用到了鼠标坐标page事件,随着鼠标背景图片移动形成有层次感的效果,但page事件在IE低版本不支持,所以还要做兼容.在研究page事件同时无意中想 ...
- Gitlab Jenkins WebHook 持续集成配置踩坑记
Jenkins相关介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 目的 配置Gitla ...
- 漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃monkey日志
漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃日志 1.APP崩溃率标准 开发或测试app的同学,对于app崩溃肯定非常熟悉,频繁的线上崩溃属 ...
- Android 项目配置 gitlab-ci 持续集成
一.项目根目录下创建一个 .gitlab-ci.yml 文件 然后在 .gitlab-ci.yml 中配置持续集成的脚本: 脚本配置详细可以看: Configuration of your jobs ...
- 【OF框架】在Azure DevOps中配置项目持续集成CI服务,推送镜像到Azure容器注册表
准备工作 开通Azure账号,具有开通服务权限,关键是里面要有钱. 开通Azure DevOps,能够创建组织和项目. 具备一定的DevOps知识,了解CICD概念.Docker基本操作. 一.创建& ...
- 有手就行3——持续集成环境—maven、tomcat、安装和配置
有手就行3--持续集成环境-maven.tomcat.安装 持续集成环境(5)-Maven安装和配置 持续集成环境(6)-Tomcat安装和配置 持续集成环境(5)-Maven安装和配置 在Jenki ...
- 使用VSTS/TFS搭建iOS持续集成环境
TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...
- Jenkins持续集成 & .NET
最近受累于测试环境每次发布都很麻烦,而且我们有多个测试环境,因此专门抽时间做了Jenkins的配置和研究. 折腾了两天终于绿灯以后,先来个截图,BlueOcean UI还是很nice的. 环境搭建 找 ...
随机推荐
- 导出EXCEL遇到问题
EXCEL设置的格式要与写入信息的格式要匹配,比如写入信息是字符串类型,而EXCEL单元格是DATE类型则会出错.
- (转)HashMap深入原理解析
[HashMap]深入原理解析 分类: 数据结构 自考 equals与“==”(可以参考自己的另一篇博文) 1,基本数据类型(byte,short,char,int,long,float,double ...
- markdown 常用格式API
摘要 记录常用格式 参考:https://www.zybuluo.com/mdeditor 1. 标题 写法: 文字前加 #, 几个# 表示几级标题 标题下方增加 = 或 - 效果 标题1 标题2 标 ...
- Linux shell 自定义函数
一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...
- ubuntu下处理mysql无法启动故障一例
故障现象: mysql无法启动 1: dmesg |grep mysql [101353.820000] init: mysql post-start process (9077) terminate ...
- 来一手 AOP 注解方式进行日志记录
系统日志对于定位/排查问题的重要性不言而喻,相信许多开发和运维都深有体会. 通过日志追踪代码运行状况,模拟系统执行情况,并迅速定位代码/部署环境问题. 系统日志同样也是数据统计/建模的重要依据,通过分 ...
- Filter ,Interceptor,AOP
一.Filter: Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- 前端到后台ThinkPHP开发整站(5)
今天周五了,这个项目做了五个晚上了,明天周末不用上班有一整天的时间来结束这个项目了,今晚主要把后台界面给弄出来了. 大概的整个后台界面就是这个样子了,接下来的工作就是搬砖了,一个个菜单功能填上去就是了 ...
- SecureCRT-转换密钥-Xshell-配置服务-使用xshell登录远程linux服务器
这篇文档不保证正确,仅仅是备份个因为所以,不必当真. SecureCRT和xShell这2个工具功能类似,均可以控制远程服务器模拟并发用户. SecureCRT自带功能可以将私钥转换为xShell可用 ...
- Git基础命令的使用
当前git版本: git version 2.9.2.windows.1 1.创建一个能与git服务器连接的本地git库 本地: git init git status (-s) git add . ...