环境准备:

1.ide   visual studio2017 Enterprise,Ide可以https://visualstudio.microsoft.com/zh-hans/downloads/下载

注意

A.如果使用了不通版本的vs,请在后续的构建脚本中作出相应更改

B.在安装时,请确保选择了.NET桌面开发

2.jenkins,请从https://jenkins.io/download/ 进行下载

3.winrar 安装在C:\Program Files\WinRAR

4.其他应该了解的

A.请在jenkins安装在windows主机上,linux上是不能构建的.因为经典的.net framework不能运行在linux上

B.本示例是将工程的输出目录放在了解决方案src目录下,分别取名为Debug和Release

jenkins的必要配置

1.git的安装,百度下一步就ok

2.Publish Over FTP,用于将生成的安装包和更新包放置到ftp服务器

3.为什么不用msbuild插件编译,因为msbuild无法编译vdproj

另外你如果用.netframework4 下的msbuild编译,你可能会收到nameof无法解析之内的错误...

创建jenkins工程

1.新建任务,输入工程名称,选择 构建一个自由风格的软件项目  模板来添加一个构建任务

2.git 配置,这个按照代码仓库的地址和认证模式配置即可.如果没有安装git,这里会提示找不到git.exe

3.为了避免出现各种操蛋的问题,建议在每次构建前清空工作空间

4.添加一个执行windows批处理条目,用于执行nuget还原

请确保在你的解决方案根目录有nuget.exe(可从网上下载,然后放到对应位置即可)

如果你的项目中有自定义的nuget包,请添加一个nuget.config,并配置号对应的源

最终的项目目录应该是类似这样的:

nuget.config的配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="www.007008.fun" value="http://www.007008.fun:7789/nuget/Default/" />
</packageSources>
</configuration>

最后输入下面的批处理命令,你的项目就可以在编译时还原nuget包了

nuget.exe locals global-packages -clear
nuget.exe restore

5.以下是整个构建脚本

这里使用rar压缩了输出路径下的目录下的文件作为更新包

使用Advanced Installer 命令行进行了安装包的自动构建

echo "正在还原程序包..."
nuget.exe locals global-packages -clear
nuget.exe restore echo "正在设置环境变量..."
set devnev=C:\Program Files (x86)\Microsoft Visual Studio\\Preview\Common7\IDE\devenv.com
set advinst=C:\Program Files (x86)\Caphyon\Advanced Installer 14.9\bin\x86\advinst.exe
set SolutionName=lamic-pc-v4.sln
set ConfigurationPlatform=Release^|x86
set Configuration=Release
set rar=%ProgramW6432%\WinRAR\winrar.exe
set OutputPath=%WORKSPACE%\src\%Configuration%\
set UpdatePackagePath=%WORKSPACE%\update_packages\update.zip
set Setup=%WORKSPACE%\src\Setup\Setup.aip echo "开始使用devenv.com编译程序..."
"%devnev%" "C:\Program Files (x86)\Jenkins\workspace\%JOB_NAME%\%SolutionName%" /ReBuild "%ConfigurationPlatform%" echo "正在写入BUILD_NUMBER..." echo %BUILD_NUMBER%>>"%WORKSPACE%\src\%Configuration%\version" echo "开始删除无用的目录和文件..."
del "%WORKSPACE%\src\%Configuration%\*.pdb" echo "开始创建更新包..."
"%rar%" a -ep1 -r "%UpdatePackagePath%" "%OutputPath%" echo "开始构建安装包"
"%advinst%" /rebuild "%Setup%"

7.添加一个构建后的操作,用于将更新包和安装包传输到FTP上

用jenkins编译WPF程序并传输到服务器的更多相关文章

  1. WPF 程序的编译过程

    原文:WPF 程序的编译过程 基于 Sdk 的项目进行编译的时候,会使用 Sdk 中附带的 props 文件和 targets 文件对项目进行编译.Microsoft.NET.Sdk.WindowsD ...

  2. 流程自动化RPA,Power Automate Desktop系列 - 创建WPF程序安装包及升级包

    一.背景 之前写过的几个WPF小工具,每次发布都需要给它打安装包和升级包,涉及到一些系列繁琐的手工操作,有了Power Automate Desktop,于是便寻思着能不能做成一个自动化的流来使用. ...

  3. 在WPF程序中打开网页:使用代理服务器并可进行JS交互

    本项目环境:使用VS2010(C#)编写的WPF程序,通过CefSharp在程序的窗体中打开网页.需要能够实现网页后台JS代码中调用的方法,从网页接收数据,并能返回数据给网页.运行程序的电脑不允许上网 ...

  4. WPF程序将DLL嵌入到EXE的两种方法

    WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...

  5. 在VS中手工创建一个最简单的WPF程序

    如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件——新建——项目——空项目,创建一个空项目. 第二步:添加引用,Presen ...

  6. 将传统 WPF 程序迁移到 DotNetCore 3.0

    介绍 由于历史原因,基于 Windows 平台存在着大量的基于 .NetFramework 开发的 WPF 和 WinForm 相关程序,如果将这些程序全部基于 DotNetCore 3.0 重写一遍 ...

  7. WPF程序中App.Config文件的读与写

    WPF程序中的App.Config文件是我们应用程序中经常使用的一种配置文件,System.Configuration.dll文件中提供了大量的读写的配置,所以它是一种高效的程序配置方式,那么今天我就 ...

  8. Android 应用获取Jenkins编译的版本号

    Android很多应用的版本号最后都带了编译的版本号.比如说V1.0.0.125,后边的125就通常使用每次编译之后build history的号码,它是逐次增加,这样就可以区分每个细分的编译版本号, ...

  9. 命令行编译 WPF

    在开发调试代码 WPF 时,经常需要在修改完成代码后,点击 Rebuild,然后到指定文件夹下点击打开对应的 .exe 验证程序是否正确, 可以通过以下命名实现修改程序后,点击一个 .bat 文件,直 ...

随机推荐

  1. Http中的身份传递

    IIS默认的身份验证方式 身份传递策略包括使用操作系统的委派功能或在应用程序级传递票证和/或凭证 为了阻止IIS的身份验证委派,可以在web.config加入如下设置, <system.web& ...

  2. 编写高质量代码改善C#程序的157个建议——建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的

    建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的 在建议50中,我们将C#中的类型分为:普通类型和继承了IDisposable接口的非普通类型.非普通类型除了包含那些托管资源的类型外, ...

  3. ColorMatrixFilter色彩矩阵滤镜;

    包 flash.filters 类 public final class ColorMatrixFilter 继承 ColorMatrixFilter  BitmapFilter  Object 使用 ...

  4. 2014-4-2解决无法访问github和google的问题

    github是个好地方,但是上不去就蛋疼了. 今天github上不去,果断f12下,看下network,发现里面好多请求都是指向 github.global.ssl.fastly.net这个域名的,然 ...

  5. C#多线程编程实战1.3等待线程

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  6. 如何将Sql server数据库中的模型图转化到Word中--并能够查看字段的属性信息

    1. 在Sql server数据库中创建数据库的模型图 -- Database Diagrams 2. 控制面板--管理工具--ODBC数据源链接--创建一个Sql server的数据源链接 3. 打 ...

  7. constexpr函数------c++ primer

    constexpr函数是指能用于常量表达式的函数.定义constexpr函数的方法有其他函数类似,不过要遵循几项约定:函数的返回值类型及所以形参的类型都是字面值类型,而且函数体中必须有且只有一条ret ...

  8. C++ TIM或者QQ 自动发送消息

    简单写了一下 很简单的demo 闲着没事干 #include "stdafx.h" #include <thread> #include <Windows.h&g ...

  9. 在一个java类里,private int a; 什么时候要使用integer

    private Integer index; if(index == null) index = 0; else this.index = index; Integer有一个明显的好处,就是它能比in ...

  10. 基于SSH协议clone GitHub远端仓库到本地-git

    经常逛 GitHub 的可能都知道,在 clone 远端仓库的时候,会有两个选项,如下图: 首先我们来说明一下两种方式的区别. 使用 HTTPS url 克隆对初学者来说会比较方便,复制HTTPS u ...