使用 Jenkins 自动编译 C# 项目
安装插件
MSBuild Plugin
安装后再构建步骤中会多一个【
Build a Visual Studio project or solution using MSBuild
】选项。配置
MSBuild
在【系统管理】->【全局工具配置】->【MSBuild】中添加本地已安装的
MSBuild
。在 Job 的构建中添加 MSBuild 步骤
配置时踩到的坑
error
CS1041
& errorCS1617
xxx.cs(13,7): error CS1041: 应输入标识符;“static”是关键字 [D:\jenkins\workspace\workspace\xxx\xxx\xxx.csproj]
xxx.cs(13,14): error CS1518: 应输入 class、delegate、enum、interface 或 struct [D:\jenkins\workspace\workspace\xxx\xxx\xxx.csproj]原因是有个
class
中使用了C# 6.0
的语法using static
来引入静态类。开发使用的 VS2015 中是可以正常编译。手动将工程属性【
langversion
】改为6
,或者使用【/p:langversion=6
】参数构建时,又输出了如下错误:CSC : error CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default [D:\jenkins\workspace\workspace\xxx\xxx\xxx.csproj]
这说明本机安装的安装
MSBuild
版本不支持C# 6.0
的语法。确认了下本机安装的
MSBuild
确实是对应.Net Framework 4.5
的。おかしい!最后去 微软官网 下载了最新版的 Visual Studio 2017 生成工具(好在可以单独安装),再在【系统管理】->【全局工具配置】->【MSBuild】新增一个配置,在 Job 的构建中选择该 MSBuild 就行了。
error
CS0246
error CS0246: 未能找到类型或命名空间名“Nest”(是否缺少 using 指令或程序集引用?)
项目遗留问题,工程文件中的引用设置的比较乱,有些虽然在 VS 中可以正常编译,通过
MSBuild
编译时就会出现该错误。
这个只需要把对应的引用删除,然后添加一个正确位置的引用就行了。