使用Jenkins自动编译C#项目

  1. 安装插件MSBuild Plugin
    安装后再构建步骤中会多一个【Build a Visual Studio project or solution using MSBuild】选项。

  2. 配置MSBuild
    在【系统管理】->【全局工具配置】->【MSBuild】中添加本地已安装的MSBuild

  3. 在Job的构建中添加MSBuild步骤

配置时踩到的坑

  1. error CS1041 & error CS1617

    xxx.cs(13,7): error CS1041: 应输入标识符;“static”是关键字 [D:jenkinsworkspaceworkspacexxxxxxxxx.csproj]
    xxx.cs(13,14): error CS1518: 应输入 class、delegate、enum、interface 或 struct [D:jenkinsworkspaceworkspacexxxxxxxxx.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:jenkinsworkspaceworkspacexxxxxxxxx.csproj]

    这说明本机安装的安装MSBuild版本不支持C# 6.0的语法。
    确认了下本机安装的MSBuild确实是对应.Net Framework 4.5的。おかしい!
    最后去微软官网下载了最新版的Visual Studio 2017 生成工具(好在可以单独安装),再在【系统管理】->【全局工具配置】->【MSBuild】新增一个配置,在Job的构建中选择该MSBuild就行了。



  2. error CS0246

    error CS0246: 未能找到类型或命名空间名“Nest”(是否缺少 using 指令或程序集引用?)

    项目遗留问题,工程文件中的引用设置的比较乱,有些虽然在VS中可以正常编译,通过MSBuild编译时就会出现该错误。
    这个只需要把对应的引用删除,然后添加一个正确位置的引用就行了。

  1. MSBuild 命令行参考

© 2018, 佳佳. 版权所有. 转载请注明出处.

发表评论

电子邮件地址不会被公开。 必填项已用*标注