Azure DevOps基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译

news2024/11/24 6:53:44

正文

1, Azure DevOps 创建项目

Project name:”NetCore_WPF_Sample“

Visibility:”Private“(根据实际项目需求)

Version control:”Git“

Work item process:”Agile“

点击 ”Create“ 创建新的项目

2,配置 Azure DevOps 流水线

选择 ”Pipelines =》“pepelines“,点击 ”Create Pipeline“ 创建持续集成管道

选择 ”GitHUb“ Yaml

选择好需要项目,开始配置 ”azure-pipelines.yml“

复制代码

# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    clean: true

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishSymbols@2
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: '**\bin\**\*.pdb'
    PublishSymbols: false
  continueOnError: true

- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: 'Standard.Tool.Platform'
    Contents: '**\bin\$(BuildConfiguration)\**'
    TargetFolder: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

复制代码

调整完 yml 文件后,点击 ”Run“ 执行 pipeline 

点击 ”Run“ 开始执行

此时我们的 pipeline 任务正在执行,我们可以点击 ”Job“ 查看详细作业

 作业完成后,我们就可以看到编译好的程序包

 点击 ”Download artifacts“ 直接下载编译好的二进制程序包

Bingo!!!🎉✌️🎉✌️🎉✌️🎉✌️

此演示步骤实现了 NET 的桌面应用程序的持续集成与持续编译,当我们 pipeline 监测到 master 分支有变动后,就会立即执行管道作业,可以确保我们不必再人工拉取代码,编译,发布二进制程序包了。

三,结尾

   通过 Azure DevOps 的 Pipeline 实现的开发团队协助是一个不错的选择。今天的内容也主要是实战操作,大家也多多练习。熟能生巧。本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还希望多多包涵,并且指出不足之处。 

github:GitHub - yunqian44/Standard.Tool.Platform

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/871291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】2 软件管理器yum和编辑器vim

目录 1. linux软件包管理器yum 1.1 什么是软件包 1.2 关于rzsz 1.3 注意事项 1.4 查看软件包 1.5 如何安装、卸载软件 1.6 centos 7设置成国内yum源 2. linux开发工具-Linux编辑器-vim使用 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行…

【设计模式】MVC 模式

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。View&#xff…

【爬虫】爬取旅行评论和评分

以马蜂窝“普达措国家公园”为例,其评论高达3000多条,但这3000多条并非是完全向用户展示的,向用户展示的只有5页,数了一下每页15条评论,也就是75条评论,有点太少了吧! 因此想了个办法尽可能多爬…

Linux 终端命令之文件浏览(2) more

Linux 文件浏览命令 cat, more, less, head, tail,此五个文件浏览类的命令皆为外部命令。 hannHannYang:~$ which cat /usr/bin/cat hannHannYang:~$ which more /usr/bin/more hannHannYang:~$ which less /usr/bin/less hannHannYang:~$ which head /usr/bin/he…

最新智能AI系统+ChatGPT源码搭建部署详细教程+知识库+附程序源码

近期有网友问宝塔如何搭建部署AI创作ChatGPT,小编这里写一个详细图文教程吧。 使用Nestjs和Vue3框架技术,持续集成AI能力到AIGC系统! 增加手机端签到功能、优化后台总计绘画数量逻辑!新增 MJ 官方图片重新生成指令功能同步官方 …

nginx负载均衡配置过程

一、环境说明 主机名IPnginx服务器nginx-server192.168.198.141web页面1web1192.168.198.100web页面2web2192.168.198.200 关闭所有主机的防火墙和Selinux服务 二、配置过程 自定义页面 自定义web1和web2的页面 主配置文件 查看nginx的主配置文件 vim /usr/local/nginx/c…

全球八分之一的河流受到缺氧影响

一项全球研究发现,世界各地河流中的溶解氧含量低得危险。缺氧的真实发生率可能更高。 小型、低梯度的城市河流,例如图中北卡罗来纳州的那条河流,是最容易缺氧的河流之一。图片来源:乔安娜布拉扎克 2023 年 3 月,《卫报…

LeetCode--HOT100题(29)

目录 题目描述:19. 删除链表的倒数第 N 个结点(中等)题目接口解题思路代码 PS: 题目描述:19. 删除链表的倒数第 N 个结点(中等) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链…

Microsoft365家庭版1年订阅新功能及版本对比

Microsoft 365可帮助您工作、学习、组织、连接和创,只需一项方便的订阅,即可尽享具有 Microsft 365 的6款精品应用、可同时登录5 台设备(包括 Windows、macOS、iOS 和 Android 设备)、高级安全性等,并且可以自由管理授…

升级STM32电机PID速度闭环编程:从F1到F4的移植技巧与实例解析

引言: 在嵌入式系统开发中,STM32系列微控制器广泛应用于各种应用领域。而对于直流有刷电机的控制,PID速度闭环是一种常用的控制方式。本文将以此为例,探讨如何从STM32F1系列移植到STM32F4系列,并详细介绍HAL库在不同型…

渗透测试验证码爆破实操

一、准备工具 captcha-killer-modified 下载路径 https://github.com/f0ng/captcha-killer-modified https://github.com/f0ng/captcha-killer-modified/releases/download/0.21-beta/captcha-killer-modified-0.21-beta-jdk11.jar 二、安装工具 burp安装captcha-killer-modif…

登录验证码实现

Hutool代码改造 Hutool 有参考文档&#xff1b;很多工具类&#xff1b;把一些功能都封装好&#xff1b;都不用你自己去写&#xff1b;直接调用它的工具类 它这里会详细告诉你引入方式Hutool <dependency><groupId>cn.hutool</groupId><artifactId>hu…

【第二阶段】kotlin语言的内联-inline关键字

1.函数如果没有使用lambda作为参数&#xff0c;就不需要声明成内联 2.函数如果使用lambda作为参数&#xff0c;就需要声明成内联&#xff0c;如果不使用内联&#xff0c;在调用端会生成多个对象来完成lambda的调用&#xff0c;会造成性能的损耗 3.函数如果使用lambda作为参数&a…

模板Plus【完整版】

文章目录 1.非类型模板参数的引入2.标准库和普通数组3.模板的特化3.1介绍3.2代码讲解3.3画图讲解 4.类、函数模板特化初识5.全特化与偏特化6.模板不能分离编译1.typename的使用2.预处理相关知识3.为什么不能分离编译&#xff1f;4.怎么解决&#xff1f;5.代码详解1.vector.h2.v…

实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot)

一&#xff1a; 计算机中的二进制 计算机以二进制表示数据&#xff0c;以表示电路中的正反。在二进制下&#xff0c;一个位只有 0 和 1 。逢二进一 位。类似十进制下&#xff0c;一个位只有 0~9 。逢十进一位。 二&#xff1a; 进制常用运算 &#xff08;位运算&#xff09;…

QT之时钟

QT之时钟 会用到一个时间类:qtime 定时类:qtimer #------------------------------------------------- # # Project created by QtCreator 2023-08-13T10:49:31 # #-------------------------------------------------QT += core guigreaterThan(QT_MAJOR_VERSION,…

基于Yolov8与LabelImg训练自己数据的完整流程

基于Yolov8与LabelImg训练自己数据的完整流程 1. 创建虚拟环境2. 通过git 安装 ultralytics3. 安装完成之后&#xff0c;通过以下代码测试下环境配置是否正确4. 安装labelImg标注软件5. 使用labelImg进行标注&#xff0c;图片使用上面的coco1285.1 点击“打开目录”选择存储图像…

如何看待40岁还在做程序员?

1&#xff0c;40岁还在做程序员是好还是坏&#xff1f; 2&#xff0c;40岁从零开始学习软件开发&#xff0c;四年后我成了首席研发 40岁了还在做程序员&#xff0c;是一个好还是坏的选择&#xff0c;这是一个很复杂的问题&#xff0c;因为每个人的情况都是不同的。在这里提供一…

38 | 浦发银行股票分析案例

本文将通过一个浦发银行股票分析案例,探讨如何从多个维度对股票进行分析,包括基本面、技术面和市场环境等因素。我们将深入挖掘浦发银行的财务数据、业务模式以及市场定位,以了解其内在价值和潜在风险。同时,我们还将考察技术面的指标,如价格走势、均线形态等,以揭示市场…