首页/新闻资讯/正文详情

Captura 的 Cake 构建脚本:安装、运行与命令行参数完全指南

发布时间:2026/9/24 1:33:40 来源:云帆数科 栏目:资讯中心
Captura 的 Cake 构建脚本:安装、运行与命令行参数完全指南
桌面应用屏幕录制音视频【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址https://gitcode.com/gh_mirrors/ca/Captura点击查看免费下载本指南系统讲解 Captura 项目中以 build.cake 为核心的 Cake 自动化构建体系如何安装 Cake 工具、如何运行构建脚本、如何使用build_version/configuration/target三个命令行参数控制构建行为并结合scripts/目录下的源码constants.cake、version.cake、backup.cake、apikeys.cake、choco.cake与 appveyor.yml CI 配置讲解版本号注入、任务依赖链与产物打包的底层原理。读完本文你将能够独立完成 Captura 的本地构建、便携版/安装包/Chocolatey 包打包并理解其与 CI 的协作方式。Cake 在 Captura 中的作用CakeC# Make是一个基于 C# 的跨平台构建自动化系统构建脚本本身以 C# 编写。Captura 仓库根目录下的 build.cake 是整套构建流程的入口它通过#l指令引用了scripts/目录下的五个辅助模块脚本文件职责scripts/constants.cake定义源目录、临时目录、输出目录、解决方案路径等全局常量scripts/backup.cake提供文件备份与恢复机制CreateBackup/RestoreBackupsscripts/version.cake解析build_version参数并更新AssemblyInfo.csscripts/apikeys.cake从环境变量读取并嵌入 Imgur / YouTube API 密钥scripts/choco.cake打包 Chocolatey 安装包其中 scripts/constants.cake 定义了整个构建过程的关键路径常量src源代码目录、temp临时目录、dist输出目录、licenses、choco以及解决方案文件 src/Captura.sln、便携包temp/Captura-Portable.zip和安装包temp/Captura-Setup.exe。安装 Cake在运行构建脚本之前需要先安装 Cake 工具。Captura 的构建文档明确要求.NET Core 2.1及以上版本然后通过 .NET 全局工具方式安装指定版本的 Cake.Tooldotnet tool install -g Cake.Tool --version 0.32.1该命令将 Cake.Tool 以全局工具形式安装安装完成后即可在任意目录直接调用dotnet-cake命令。作为佐证CI 配置 appveyor.yml 的install阶段也执行了完全相同的命令dotnet tool install -g Cake.Tool --version 0.32.1说明0.32.1是项目锁定并经过 CI 验证的版本。运行构建脚本安装完成后在仓库根目录直接执行dotnet-cake不带任何参数时dotnet-cake会加载当前目录下的build.cake并运行默认目标default target。从 build.cake 的源码可以看到默认目标Default依次依赖Pack-Portable、Pack-Setup、Pack-Choco三个任务也就是说一次无参数运行会完成便携版、安装版和 Chocolatey 包的完整打包流程。构建脚本中的任务Target体系build.cake 中定义了以下任务这也是--target参数可选值的完整集合Task 名称依赖关系行为Build无用 MSBuild 以指定 Configuration 对解决方案执行RebuildRestore使用 VS2019 工具链Clean-Output无清空dist输出目录Populate-OutputClean-Output、Build调用PopulateOutput()组装发布目录见下文Pack-PortablePopulate-Output调用PackPortable()生成便携版 ZIP 并补齐Settings、Codecs目录Pack-SetupPopulate-Output用 Inno Setup 编译 Inno.iss并以/DMyAppVersion注入版本号Pack-ChocoPack-Portable调用PackChoco()生成 Chocolatey 的 nupkgTestBuild用 xUnit runner 运行 src/Tests/ 编译出的Captura.Tests.dllDefaultPack-Portable、Pack-Setup、Pack-Choco本地默认构建入口CITest、Pack-Portable、Pack-Setup、Pack-Choco持续集成入口相比Default额外执行测试从依赖链可以看出任务之间是流水线式的递进关系Clean-Output→Build→Populate-Output→Pack-Portable/Pack-Setup而Pack-Choco又依赖便携包产物CI则在最顶层串起测试 全部打包。PopulateOutput发布目录的组装逻辑PopulateOutput()函数build.cake负责把构建产物组装到dist目录复制licenses目录开源许可证文件从Captura.Console/bin/Configuration与Captura/bin/Configuration复制可执行文件*.exe*复制界面程序中的Languages本地化语言包与keymaps键盘映射目录Release 构建复制lib依赖目录Debug 构建额外复制所有.dll、.pdb、.xml文件便于调试。随后PackPortable()会创建Settings与Codecs两个空目录对应便携版行为详见 docs/Portable.md将整个dist压缩为temp/Captura-Portable.zip再清理这两个目录。命令行参数详解build.cake 顶部通过Argument声明了两个内建参数而版本参数则在 scripts/version.cake 中读取。三个参数的完整说明如下参数说明示例build_version构建版本号。稳定版/CI 构建形如v9.0.0预发布版形如v9.0.0-beta3。构建过程中会依据该值更新AssemblyInfo.cs--build_versionv9.0.0configuration构建配置Release或Debug默认Release--configurationReleasetarget要运行的构建任务取值见上文任务表见 build.cake--targetCI标准用法示例dotnet-cake --targetCI --configurationReleasebuild_version版本号解析与 AssemblyInfo 注入build_version是三个参数中逻辑最复杂的一个其处理实现在 scripts/version.cake首先通过Argumentstring(build_version, v0.0.0)读取参数缺省值为v0.0.0该脚本注释说明version参数名已被 cake.exe 自身占用因此这里命名为build_version用两个正则校验格式稳定版^v\d\.\d\.\d$匹配后去掉开头的vv9.0.0→9.0.0预发布版^v\d\.\d\.\d-[^\s]$匹配后取-之前的部分再去掉vv9.0.0-beta3→9.0.0两者都不匹配则抛出ArgumentException(Invalid Version Format, build_version)直接终止构建对src/Captura/Properties/AssemblyInfo.cs与src/Captura.Console/Properties/AssemblyInfo.cs两个文件执行UpdateVersion()——先用CreateBackup备份到temp目录再通过正则定位AssemblyVersion(...)属性并替换为解析后的版本号。因此构建完成后程序集版本号如当前仓库中默认的AssemblyVersion(0.0.0)见 src/Captura/Properties/AssemblyInfo.cs会被动态改写为build_version对应的正式版本号。同时 scripts/backup.cake 的Teardown机制保证无论构建成功与否脚本结束时都会把备份文件恢复回去避免源仓库中的AssemblyInfo.cs被永久污染。configurationRelease 与 Debug 的行为差异configuration参数默认Release不仅传给 MSBuild 控制编译配置还直接影响构建脚本本身的逻辑分支PopulateOutput的差异Debug 构建复制全部.dll/.pdb/.xml文件Release 构建只复制lib目录build.cakeAPI 密钥嵌入Setup阶段会判断if (configuration Release)仅 Release 构建执行EmbedApiKeys()build.cake。EmbedApiKeys()scripts/apikeys.cake的原理是用正则Get\((.*)\)扫描 src/Captura.Core/ApiKeys.cs收集所有形如Get(xxx)的占位调用然后检查同名环境变量是否存在存在则把占位符替换为环境变量中的真实值。这解释了 docs/Build.md 中开发期从环境变量读取、生产构建嵌入应用的设计对应环境变量为imgur_client_id、yt_client_id、yt_client_secret分别对应 Imgur 与 YouTube 上传功能仅在需要相应上传能力时才必须提供。与 CI 的集成方式appveyor.yml 展示了 Cake 脚本在持续集成中的真实调用方式CI 镜像固定为Visual Studio 2019install阶段安装 Cake.Tool 与 Inno Setupbuild_script阶段根据是否为 tag 构建决定版本号tag 构建直接使用 tag 名作为build_version如v9.0.0非 tag 构建则生成v0.0.构建号形式的版本号无论哪种情况最终都执行dotnet-cake --targetCI --configuration配置 --build_version版本构建产物temp/Captura-Portable.zip、temp/Captura-Setup.exe、temp/captura.*.nupkg被收集为 artifactsRelease tag 构建时自动部署到 GitHub Releases 与 Chocolatey对应 choco/captura.nuspec 与 scripts/choco.cake 中基于便携包哈希计算校验和并写入tools/chocolateyinstall.ps1的打包逻辑。关于本地构建的前置条件Visual Studio 2019 及 .NET 桌面开发工作负载、.NET Core 2.1、FFmpeg 下载等可进一步参考 docs/Build.mdCI 构建与 dev build 获取方式见 docs/CI.md。小结Captura 的 Cake 构建体系将编译、测试、组装发布目录、打包便携版/安装包/Chocolatey 包整合为一条清晰的任务流水线。日常使用只需记住三个要点用dotnet tool install -g Cake.Tool --version 0.32.1安装工具、在仓库根目录执行dotnet-cake、按需通过--build_version/--configuration/--target控制版本号、构建配置与目标任务。若要深入理解每个环节build.cake 与scripts/目录下的五个.cake模块即是完整的源码级参考。赞分享桌面应用屏幕录制音视频【免费下载链接】CapturaCapture Screen, Audio, Cursor, Mouse Clicks and Keystrokes项目地址https://gitcode.com/gh_mirrors/ca/Captura点击查看免费下载相关推荐Captura命令行脚本参数完全指南5大动词与高级选项详解Captura命令行脚本参数完全指南5大动词与高级选项详解 Captura是一款功能强大的屏幕捕获工具支持屏幕录制、音频捕捉、鼠标点击和键盘按键记录等多种功桌面应用屏幕录制音视频Captura命令行API文档参数说明与示例脚本Captura命令行API文档参数说明与示例脚本 1. 概述 Captura命令行工具 captura cli 提供屏幕录制、截图、系统信息查询等功能支桌面应用屏幕录制音视频Minimal Startpage配置详解从基础设置到高级自定义Minimal Startpage配置详解从基础设置到高级自定义 Minimal Startpage是一款轻量级的浏览器起始页工具专为Chrome和Fire创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Matlab离线安装STM32支持包完整指南
Matlab离线安装STM32支持包完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:33:34

腾讯云轻量服务器六年演进:老用户升配实战指南
腾讯云轻量服务器六年演进:老用户升配实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:33:28

自媒体团队AI工具选型:单点工具、一站式工作台还是混合方案?
自媒体团队AI工具选型:单点工具、一站式工作台还是混合方案?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:33:21

Python构建新能源车数据分析系统:从架构到可视化实践
Python构建新能源车数据分析系统:从架构到可视化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:39:04

AVL测功机培训:从台架接线到PUMA联调的完整链路
AVL测功机培训:从台架接线到PUMA联调的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:38:33

车载以太网中间件选型:SOME/IP、MQTT与DDS对比详解
车载以太网中间件选型:SOME/IP、MQTT与DDS对比详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:38:21

CCM图腾柱PFC设计实战:GaN与SiC选型、控制策略及调试技巧
CCM图腾柱PFC设计实战:GaN与SiC选型、控制策略及调试技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:38:21

单片机开发三语言协同:汇编/C/C++选型与工程实践
单片机开发三语言协同:汇编/C/C++选型与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:37:45

LLM+BI落地实战:从NL2SQL到自动异常发现的三层技术锚点
LLM+BI落地实战:从NL2SQL到自动异常发现的三层技术锚点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 3:37:38

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码