为 Jenkins 配置 .Net 持续集成环境
去年年底,得益于公司引入 Jenkins,让我们在持续集成方面迈出了第一步,本文不赘述如何安装 Jenkins,主要关注点在于配置 .Net 环境。另外本文是在 Windows 环境下安装的 Jenkins 进行操作。
一、安装环境
首先我们需要先准备几个安装包,将它们安装到 Windows 上:
| .NET Framework 4.6.1 | https://www.microsoft.com/zh-cn/download/details.aspx?id=49982 |
| Microsoft Build Tools 2015 | https://www.microsoft.com/zh-CN/download/details.aspx?id=48159 |
| .NET Framework 4.6.1 Developer Pack | https://www.microsoft.com/zh-CN/download/details.aspx?id=49978 |
| NuGet x86 Commandline | https://dist.nuget.org/index.html |
第一个当然是大家熟悉的 .NET Framework 运行环境了;
第二是 MSBuild,虽然平时我们使用 Visual Studio 都是图形界面编译、发布程序,但实际上 Visual Studio 是去调用 MSBuild 来进行各种操作的,所以我们要想让 Jenkins 也能自动编译代码,也要为它准备一套 MSBuild。
第三个包为 .NET Framework 4.6.1 开发人员包(Developer Pack),在过去称为 Targeting Pack,里面包含了一堆程序集。像是早期版本的 Visual Studio 2013,发布之时并没有 .NET Framework 4.6.1,要想让它支持就需要安装这个开发人员包。如果不安装的话,后期编译 4.6.1 的程序时会提示找不到 System.Object、System.Attribute 程序集的错误。4.6.1 的开发人员包包含了 4.0、4.5、4.6 Targeting Pack 的内容,安装 4.6.1 的包就不需要安装 4.0 其他版本的包了。另外如果需要中文支持,需要先安装英文版,再安装中文语言包。
最后一项为 NuGet 的控制台程序,在编译程序之前,先需要使用 NuGet 进行包还原。这个软件不需要安装,放在一个固定的位置就行,例如放在 D:\Tools\CI 下。
二、安装 Jenkins 插件
进入 Jenkins 的插件管理页面,安装 MSBuild 插件,地址为:https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin
安装好之后,之后进入 “Global Tool Configuration” 界面:

在打开的页面里找到“MSBuild”一栏,先点击“MSBuild 安装”,再点击“新增 MSBuild” 按钮,即可配置 MSBuild.exe 的路径。由于我使用 32 位的 MSBuild,所以可以这样配置:

MSBuild 的默认安装路径
| 32位 | C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe |
| 64位 | C:\Program Files (x86)\MSBuild\14.0\Bin\amd64\MSBuild.exe |
配置好之后不要忘了保存。
三、Jenkins Job 配置
准备好了运行环境和 Jenkins 插件,我们新建一个 Job 试一试。我们公司使用的是 Subversion,所以我会从 SVN 下载代码,使用 Git 等仓库也大同小异,这里就略过了。
1. 还原 NuGet 程序包
我们需要在“构建”一栏中,新增一个“Execute Windows batch command”(执行批处理命令)步骤,用来进行 NuGet 包还原
D:\tools\CI\nuget.exe restore .\YourSolutionName.sln
首先是指定 nuget.exe 的路径,然后使用 restore 命令,对当前目录下的 YourSolutionName.sln 解决方案文件进行包还原。大家根据自己实际情况进行修改即可。
2. 配置 MSBuild 编译参数
依然是在“构建”一栏,新建一个“Build a Visual Studio project or solution using MSBuild”(使用 MSBuild 生成 VS 项目或解决方案)步骤

从上往下,依次是
- 选用的 MSBuild 版本
- 目标项目或解决方案文件的路径+文件名
- MSBuild 参数
这里主要讲一下“Command Line Arguments”的配置,更全面的 MSBuild 文档可以参阅 MSDN:https://msdn.microsoft.com/zh-CN/library/dd393574.aspx
我希望生成一个 ASP.NET MVC 项目,并发布到文件系统中,主要用到:
- /t:Rebuild 重新生成
- /p:Configuration=Release Release 生成模式
- /p:VisualStudioVersion=14.0 指定子工具集(https://msdn.microsoft.com/zh-cn/library/bb383796.aspx)版本,不设置会报错
- /p:DeployOnBuild=True;PublishProfile=Testing-Environment-CI-publish 使用 Testing-Environment-CI-publish.pubxml 发布文件来发布项目
四、补充
[2017年1月24日09:30更新]
不好意思,昨晚发布文章时遗漏了这一点。如果按上面的配置,使用 MSBuild 编译项目,可能会遇到这样的错误:
未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets”
这时候只需要找一台安装了 Visual Studio 2015 的计算机,将 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0 目录里的所有内容都拷贝到 Jenkins 所在的 Windows 系统的这个目录下,然后重新构建,就可以了。
后面可能还会发一些有关 Jenkins 集成 xUnit.net 单元测试和自动发布方面的一些内容,不过不知道年前还能不能发出来了 XD
希望文章能对大家有作用。
为 Jenkins 配置 .Net 持续集成环境的更多相关文章
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- Jenkins 快速搭建持续集成环境
持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...
- 构建基于Jenkins + Github的持续集成环境
搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...
- Linux下Jenkins+git+gradle持续集成环境搭建
Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集 发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文 一.项目介绍 和 linux ...
- 用Jenkins构建Django持续集成环境
用Jenkins构建Django持续集成环境 - V2EX https://www.v2ex.com/t/32054
- jenkins + Git 搭建持续集成环境
持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前 ...
- Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 java mvaen项目构建一个持续集成环境,用到了Jenkins.因公司的服务器在内网,访问外网时要通过代理,所以为m ...
- Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)
一.安装说明 系统环境:CentOS release 6.4 JDK版本:jdk1.8.0_181 Jmeter版本:apache-jmeter-3.0 Ant版本:apache-ant-1.9.13 ...
- 基于 Jenkins 快速搭建持续集成环境
什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...
随机推荐
- Keepalived详细介绍简介
1.1.Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可 ...
- python之路:进阶篇
> ) { ; } printf(;} print i >>> >>> == : name == == ...
- hibernate---联合主键关联
被主导方wife有两个主键: package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistenc ...
- Xcode 6配置里定义${ARCHS_STANDARD}为armv7, arm64以及错误
转发:http://www.cocoachina.com/ios/20141013/9897.html 最近一次的Xcode 6更新默认不再支持arm7s架构,究竟是要废除不用呢还是仅仅只是一个疏忽? ...
- The Willpower Instinct
https://book.douban.com/subject/7043452/ 1.冥想2.健康饮食(低GI.素食为主,未加工食物为主).低GI食物使血糖稳定(蛋白.麦片.粗纤谷类.豆类.水果蔬菜) ...
- R语言相关工具
R: 下载 R语言的基础工具,包括R编译器,R控制台等 RStudio:下载 R程序集成开发环境.特别好用,包括一系列的集成工具. Rtools:下载 Windows环境下,编译R包的工具库.也可以用 ...
- seajs的常用api简易文档
目前使用sea.js的公司越来越多, 比如朋友网,阿里巴巴,淘宝网,百姓网,支付宝,有道云笔记等.模块化的javascript开发带来了可维护,可扩展性,尤其在多人协作开发的时候不用再担心文件依赖和函 ...
- [iOS Animation]-CALayer 专用图层
专用图层 复杂的组织都是专门化的 Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animati ...
- LPC1768的usb使用--硬件篇
LPC1768芯片带有USB设备控制器,前面写的文章都是在说比较简单的设备驱动,今天来说复杂一点的 首先是硬件层的配置 #ifndef __USBHW_H__ #define __USBHW_H__ ...
- tp框架实现ajax注册验证
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...