VS工具集实战:环境配置、脚本使用与工程模板生成指南
简介VS平台工具集.zip是一份面向Visual Studio开发者的平台工具集整合包用于补充和更新VS的构建与编译组件适合需要在Windows环境开展.NET/C开发、自定义MSBuild构建流程或调试工具链的工程师。压缩包共收录2000个文件以1158个DLL动态库与502个XAML界面资源为主辅以PDB调试符号、XML配置、targets/props构建规则、EXE可执行程序及rsp响应文件等整体大小112.25MB从编译、链接到配置环节均有覆盖其中DLL库支撑核心构建逻辑XAML用于界面定制PDB辅助调试targets/props则能精细控制生成过程。已有6418人学习下载。将压缩包解压至C盘Program Files (x86)\MSBuild目录后开发者可整套复用VS扩展组件config与XML配置便于调整工具运行行为从而自定义构建任务、项目模板及编译参数lib库与tasks任务定义还能为深度定制MSBuild提供参考。这份资源尤其适合离线搭建VS工具集、批量部署统一构建环境或深入探究MSBuild机制的开发者参考。1. VS平台工具集先搞清楚它替你干了哪些活如果你的工作台长期是“VS平台本地工具链”的组合大概率遇到过环境迁移翻车的情况。我见过某开发者在一台新机器上同步老工程链接库路径对不上、编译器版本不匹配整整调了一个下午才跑通。后来他把 VS工具集 这类打包好的配置脚本引入流程环境探测、依赖检查、模板生成全用脚本接管半小时内把新机器拉到了可编译状态。这份工具集的核心价值不是某个单一功能而是把散落的配置、模板、脚本和数据整合成一套可迁移的工作流。适合长期维护跨平台C工程、嵌入式固件和需要频繁换机器同步开发的从业者。2. 工具集目录与配置解析先看懂核心字段再改参数压缩包解压后第一次看起来会有点乱。我建议先花十分钟过一遍目录结构和配置文件而不是急着跑脚本。工具集的设计思路是“配置与脚本分离”脚本里不写死任何绝对路径所有机器相关的信息都从配置文件读取。这样换机器时只需要改一个文件其余部分可以原样搬走。2.1 目录结构五个模块各管一件事vstools/ ├── config/ │ ├── global_config.json │ └── variables.json ├── scripts/ │ ├── setup.sh │ ├── init_project.sh │ ├── build.sh │ ├── package.sh │ └── check_deps.sh ├── templates/ │ ├── cpp_app/ │ ├── cpp_lib/ │ └── embedded_fw/ ├── cache/ └── backup/这套目录划分是典型的“配置-脚本-模板-产物”四层结构。config 目录存放全局配置和模板变量映射scripts 目录放所有可执行脚本templates 目录是工程骨架模板cache 目录存编译中间产物和运行日志backup 目录保存每次配置变更前的快照。目录职责常见误用config统一入口所有脚本从这里读参数把路径直接硬编码进脚本scripts可执行动作可被批处理调用在脚本里写死机器名templates新工程骨架占位符替换后复制手动复制模板再一个个改cache编译产物与日志多工程共用同一缓存目录backup配置变更前的后悔药从不清理也不看内容我一般会把 backup 目录留足空间每次运行 setup 脚本前自动备份当前配置。这个习惯在调坏参数时特别管用直接回滚到上一个可运行版本省去重新排查的时间。2.2 配置文件优先改这几个字段而不是全盘照抄{ vc_version: 14.3, compiler_path: C:/vstools/toolchains/x64, link_lib_path: [ C:/vstools/third_party/lib, ${PROJECT_ROOT}/lib ], char_set: unicode, api_level: 10.0.19041.0, build_output_dir: C:/vstools/cache }vc_version 字段控制脚本选择哪套编译工具链。工具集默认按版本号前缀做匹配如果机器上同时装了多个版本脚本会选出第一个前缀匹配项。compiler_path 指向编译器所在根目录注意这里使用正斜杠Windows 和 Linux 下都能被脚本正确解析。link_lib_path 支持环境变量展开${PROJECT_ROOT} 会在工程初始化时替换为实际路径。我建议把第三方库路径统一收敛到一个目录避免在多个盘符之间找依赖。char_set 字段决定工程使用 unicode 还是 multibyte 字符集这个字段必须和你链接的外部库保持一致否则会出现 unresolved external symbol。api_level 指的是目标平台 SDK 版本。修改这个字段要慎重降低版本号会导致工程无法使用较新的 API升高版本号可能引入新库依赖。最稳妥的做法是保持和当初编译外部库时一致的版本号。2.3 setup 脚本运行时做了什么setup.sh 是整个工具集的启动器。它按照 config 目录里的参数生成环境探测报告 env_probe.txt然后创建编译工具链的符号链接。第一次运行时你能看到类似如下的输出[PROBE] checking vc_version ....... found 14.3 at C:/vstools/toolchains/x64 [PROBE] checking sdk api_level .... found 10.0.19041.0 [PROBE] checking link_lib_path ............ 2 paths, 18 libs found [PROBE] missing lib: fmt (optional) [LINK] toolchain linked to C:/vstools/cache/active_toolchain [DONE] backup saved to backup/2025xxxx_xxxxxx检测到某个库缺失时脚本不会中断而是标记 optional 并继续。这样设计是为了避免因为一个不常用的库导致整个环境初始化失败。我会在第一次跑完后翻一遍 env_probe.txt重点看 missing 和 incompatible 两类记录确认它们不影响当前工程再继续。3. 把工具集接到新工程初始化脚本与模板落地的完整步骤这一章讲怎么把工具集真正用起来操作路径是“环境初始化 → 生成工程骨架 → 修改模板变量 → 试编译”。每一步都有可复现的命令直接照着敲就能看到效果。3.1 首次接入环境探测与符号链接创建cd /path/to/vstools bash scripts/setup.sh --check-only bash scripts/setup.sh --force--check-only 参数让脚本只做探测和检查不写入任何配置。适合第一次在一台新机器上运行先看看环境是否满足要求再决定是否真正初始化。--force 参数表示强制覆盖已存在的配置和符号链接同时脚本会自动把当前配置备份到 backup 目录。探测完成后脚本会在 cache 目录下生成 active_toolchain 符号链接指向实际编译器所在路径。后续所有编译、打包脚本都通过这个链接访问工具链而不是直接引用绝对路径。这样做的好处是当你切换编译器版本时只需要重新跑一次 setup.sh各脚本无需改动。如果之前在同一台机器上配置过旧版本建议先跑一次带有 --force 的初始化避免残留配置干扰。脚本会先备份旧配置到 backup 目录再生成新配置。备份文件名带时间戳比如 backup/20250101_153000方便找后悔药。3.2 模板落地用工程骨架生成可编译的新工程bash scripts/init_project.sh \ --template cpp_app \ --name demo_sdk \ --output C:/workspace--template 指定使用 templates/cpp_app 这个骨架--name 指定工程名--output 指定生成目录。init_project.sh 会做三件事复制模板目录、按 variables.json 替换占位符、根据 global_config.json 生成该工程的 build_profile.json。模板里的占位符替换是核心机制。骨架文件中所有形如 ${PROJECT_NAME}、${API_LEVEL} 的文本都会被替换为实际值。如果模板里没有用到某个变量替换脚本会自动跳过并给出提示不会中断流程。# replace_template.py 示例片段 import json, os, re with open(config/variables.json) as f: variables json.load(f) for root, _, files in os.walk(target_project): for file in files: path os.path.join(root, file) with open(path, r, encodingutf-8) as f: content f.read() for key, value in variables.items(): content content.replace(${ key }, value) with open(path, w, encodingutf-8) as f: f.write(content)这段替换逻辑很简单但有一个容易忽略的点它只针对文本文件生效二进制文件需要在前面的遍历中排除。我习惯先把模板目录里的所有文件列出来按扩展名过滤掉 .png、.bin、.lib 这类文件再做替换。否则可能会把二进制内容改坏。生成完成后进入 C:/workspace/demo_sdk 目录直接运行构建脚本验证模板是否可用。如果编译报错优先看 build_profile.json 里的路径字段大多数问题出在链接库路径没有正确展开。4. 常用脚本实战编译、打包与依赖检查的参数调法工具集的日常高频操作集中在三个脚本build.sh 负责编译package.sh 负责产物打包check_deps.sh 负责依赖核对。这一章逐个讲清楚参数含义和输出怎么读。4.1 一键编译参数优先级与输出解析bash scripts/build.sh \ --project C:/workspace/demo_sdk \ --target debug \ --clean-first \ --jobs 8--project 指定工程根目录脚本会读取该目录下的 build_profile.json按里面的配置执行编译流程。--target 可选 debug 或 release不同 target 会影响优化级别和是否附带调试信息。--clean-first 表示编译前清理上次的中间产物建议在修改过链接参数后使用。--jobs 控制并行编译线程数一般设为处理器核心数的两倍以内。编译完成后脚本会输出一段简短的链路汇总[BUILD] 39 files compiled, 12 warnings [LINK] output: C:/workspace/demo_sdk/bin/demo_sdk.exe [LINK] summary: OK, 2 static libs, 1 dll [BUILD] Finished in 42.3s编译失败时不要盯着最后一屏的崩溃栈看。脚本会把完整日志写入 cache/build_full.log直接打开这个文件搜索第一个 error 关键字那里才是根因所在。我见过不少新手被日志末尾的“段错误”误导实际错误在几十行之前就出现了。编译成功但你改了一个无关紧要的头文件后全量重建很耗时间。build.sh 支持 --incremental 参数只重编受影响的部分。开发迭代时我会习惯性地加这个参数只有改到公共头文件时才做全量构建。4.2 打包与增量发布少传文件少踩坑bash scripts/package.sh \ --project C:/workspace/demo_sdk \ --target release \ --incremental \ --manifest-file C:/workspace/demo_sdk/build_manifest.jsonpackage.sh 默认把 release 产物打包成压缩包。--incremental 配合 --manifest-file 使用时脚本会先比对清单里的文件哈希只有发生变化的那部分才会进入增量包。第一次运行时没有清单文件脚本会生成一份全量清单。format用途适用场景zip全量包通用解压交付给外部协作方diff差量包按清单生成内部迭代自更新runnable可直接运行的目录拷贝到目标机器全量包适合初次交付差量包适合频繁更新。我一般把增量逻辑固化到一个自动化流程里每次编译通过后自动生成差量包部署时只要把 diff 包拷过去配合清单做增量合并。4.3 依赖检查与自动补链接bash scripts/check_deps.sh --project C:/workspace/demo_sdk脚本扫描工程源代码里的 include 语句提取外部库引用再去 linker 路径下核对同名库是否存在。输出类似这样[DEPS] checking 14 include refs... [DEPS] OK : fmt/format.h - fmt.lib [DEPS] OK : boost/shared_ptr.hpp - boost_system.lib [DEPS] MISS : opencv/core.hpp - opencv_core.lib NOT FOUND [DEPS] HLINK: opencv_core.lib not in link_lib_pathMISS 表示引用了这个库但工具集路径下找不到对应文件。HLINK 表示文件存在但没被链接器引用。处理思路是先确认这个库是否真的需要链接进当前工程如果确属必需把它的目录加到 global_config.json 的 link_lib_path 字段再跑一次 check_deps.sh 验证。依赖检查有一个常见误用把不相干的库全部加入链接路径导致链接器在多个目录间来回搜最终因为符号重复而报错。我建议只将当前工程真正使用的库目录加入路径其余保持原样。5. 避坑排查五个容易翻车的细节与对应解决这部分是从实际使用经验里捡出来的每一条都对应真实翻车场景按“现象 → 原因 → 解决”展开。5.1 路径带空格导致链接失败现象编译过程正常链接阶段报 LNK1104提示找不到某个 .lib 文件但文件明明存在。原因脚本拼接链接器参数时没有统一给路径加引号。Windows 下 C:/Program Files 这类带空格的路径会被拆成多个参数链接器自然找不到完整路径。解决把 compiler_path 和 link_lib_path 里的路径统一迁移到无空格目录比如 C:/vstools 下。如果因为外部依赖无法迁移在配置字段里改用 8.3 短路径形式例如 C:/PROGRA~1可以减少一部分问题。最省心的做法是建立符号链接指向真实路径。5.2 字符集不一致导致外部库链接失败现象外部库明明能在另一个工程里链接成功换到这个工程就报 unresolved external symbol而且报错符号带了奇怪的修饰后缀。原因global_config.json 里的 char_set 字段与外部库编译时使用的字符集不一致。Unicode 字符集下符号名会附加修饰信息而多字节字符集没有。两者总是一对一个错。解决确认外部库当初的编译参数把 char_set 字段改成一致的值重新编译当前工程。如果外部库状态未知最快的做法是分别编译两个版本的库按需切换。5.3 环境探测误判工具链版本现象setup.sh 检测到机器上安装了新旧两个版本的编译器自动选中了新版但工程需要旧版 SDK 才编译通过。原因探测逻辑默认按版本号从大到小取第一个匹配项没有引入工程要求的版本限制。解决在工程的 build_profile.json 里显式指定希望使用的 vc_version并和 global_config.json 保持一致。随后删除 cache 目录里的 active_toolchain 链接重新运行 setup.sh让工具集按新配置重建符号链接。5.4 杀毒软件把生成物当可疑程序隔离现象编译和打包过程正常但运行生成的可执行文件时文件已经不存在或者运行到中途进程消失。原因某些安全软件对未签名的、从脚本生成的 exe 执行启发式扫描检测到可疑行为后自动隔离。工具集生成的产物没有代码签名容易触发策略。解决把项目目录和 vstools/cache 目录加入安全软件的排除列表然后重新执行打包。如果需要交付给外部协作方建议对生成物做一次代码签名能减少这类误报。5.5 缓存目录串工程导致产物混乱现象A 工程编译完成后B 工程的打包产物里出现了 A 的文件。原因build_output_dir 在多个工程间共用同一个目录。当两个工程在同一天创建时缓存目录按时间戳命名可能会落到同一个子目录最终打包时把中间产物一起扫进去。解决每个工程在 build_profile.json 里设置独立的 build_output_dir比如 ${PROJECT_ROOT}/bin/pack。打包脚本按工程隔离产物目录从根源上解决串文件问题。5.6 快速定位日志关键行遇到编译失败而日志太长时我习惯用 grep 过滤关键位置grep -nE error C|LNK[0-9]{4}|undefined reference \ C:/vstools/cache/build_full.log | head -20一次能把真正的错误行找出来。看到 error C 或 LNK 开头的记录通常就是根因所在再往上翻 10 行左右就是具体出错的文件。6. 进阶自定义模板与增量发布的小技巧工具集的价值不只是开箱即用更值得花时间做一层属于自己团队的定制。下面两个技巧是我实际用得最多的。第一个技巧是把模板变量做成独立映射文件。init_project.sh 默认读取 config/variables.json模板里出现 ${KEY} 就会从映射表取对应值。当你的工程种类多起来后可以按模板各建一份变量文件生成工程时用 --variables 参数切换。这样改一份映射表就能批量更新一批新工程不用改脚本本身。bash scripts/init_project.sh \ --template cpp_lib \ --name image_proc \ --output C:/workspace \ --variables config/variables_api.json第二个技巧是增量发布时的校验习惯。package.sh 生成的 manifest 文件里记录每个文件的哈希值部署完成后我一般会把校验步骤接在脚本后面cd C:/workspace/demo_sdk/bin find pack -type f -exec sha256sum {} checksums.txt diff checksums.txt (sed s#^#pack/# ../build_manifest.json)两条命令对比本地产物哈希与发布清单是否一致。输出为空就说明文件完整任何差异都能直接看出是哪个文件出了问题。另外一个容易被忽略的地方backup 目录。每次 setup.sh 跑完压缩包里的旧配置都会留一份快照。我习惯了在改动 global_config.json 之前先复制一份到别处而不是依赖脚本的自动备份。因为工具集只覆盖脚本自身管理的文件万一你把配置文件改到不可用的状态脚本备份也可能一并损坏。手动多留一份等于多了一道保险。从那以后每次把工具集迁移到新机器我都强制按“check-only 探测 → 备份旧配置 → 正式初始化 → 试编译模板工程”的顺序走一遍缺一步都不开工。如果你也常被环境问题拖累建议先按这份资源把初始化流程跑通再按自己的工程类型去扩展模板。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

拒绝破解商业软件,转向合规逆向工程

拒绝破解商业软件,转向合规逆向工程

抱歉,这个主题我没办法帮你写。你给出的标题里涉及“查壳”“改跳转”“破解”这类针对商业软件的逆向破解操作,这是典型的绕过授权、破坏技术保护措施的行为,既违反《著作权法》和《计算机软件保护条例》,也不符合主流价值观和内…

2026/10/19 5:30:22 阅读更多 →
YOLOv8s OpenVINO IR模型部署实战:从解压到推理的完整指南

YOLOv8s OpenVINO IR模型部署实战:从解压到推理的完整指南

简介:本资源为YOLOv8s-Detect模型转换后的OpenVINO推理模型包,面向需要在Intel平台部署实时目标检测的开发者与边缘计算实践者,尤其适合无人机、安防监控、智能交通等低延迟场景。压缩包共3个文件,包含xml与bin两类OpenVINO IR核心…

2026/10/19 5:30:22 阅读更多 →
GEO服务商避坑指南:AI搜索时代的内容选型清单

GEO服务商避坑指南:AI搜索时代的内容选型清单

我最近刚把一件重要的事情做完——因为一个新项目的关系,前后比稿了三家GEO优化服务商。说实话,比稿这件事本身不稀奇,我过去选搜索引擎优化供应商也经历过好几轮。稀奇的是,GEO这个赛道今天已经拥挤到让人眼花缭乱的地步&#xf…

2026/10/19 5:29:21 阅读更多 →

最新新闻

论文查重与AI率检测全攻略:原理、工具与降重技巧

论文查重与AI率检测全攻略:原理、工具与降重技巧

每年到了毕业论文提交季,最让人焦虑的往往不是论文本身有多难写,而是“查重”那一关。更麻烦的是,近两年几乎所有高校都多了一条新指标:AI生成内容检测。也就是说,论文不仅要控制重复率,还要控制“AI率”。…

2026/10/19 6:07:40 阅读更多 →
AI生成论文查重工具与实用通过技巧:降重和去AI痕迹全解析

AI生成论文查重工具与实用通过技巧:降重和去AI痕迹全解析

现在的论文写作已经不太一样了。以前大家最担心的是“重复率太高”,特地用各种改写工具对付查重系统;现在又多了一件事,很多学校、期刊不仅要看重复率,还会用AI检测工具判断论文是不是“大模型生成的”。于是“AI生成论文查重工具…

2026/10/19 6:07:40 阅读更多 →
软件测试工程师转型AI教育:技能迁移与90天实操指南

软件测试工程师转型AI教育:技能迁移与90天实操指南

2026年了,软件测试从业者的职业讨论里,AI教育这个词出现的频率越来越高。它不再只是教育行业内部的话题,而是被很多测试同行看作“新出路”的关键词。所谓新路径,不是让你丢掉测试底盘去卷算法,也不是让你从零学做课件…

2026/10/19 6:07:40 阅读更多 →
测试工程师转型AI教育:能力迁移与实操路径

测试工程师转型AI教育:能力迁移与实操路径

去年底我参加了一个业内的线上交流,主题是测试工程师的技能树更新。会场上有位同行问了一个很现实的问题:如果自动化测试工具越来越智能,测试用例可以自动生成、自动维护,那我们这批人还剩下什么?当时我没法给出一个让…

2026/10/19 6:07:40 阅读更多 →
图表设计实战指南:从配色、布局到团队规范,提升图表可读性

图表设计实战指南:从配色、布局到团队规范,提升图表可读性

1. 从"diagram-design"这个标题里能读出什么第一次看到"diagram-design"这个标题,我脑子里蹦出来的第一个念头是:这大概率不是一个单纯的"画图工具"项目,而是一套关于"图表设计"的方法论或者设计系统…

2026/10/19 6:07:40 阅读更多 →
双目三维重建从标定到体积测量:误差链分析及5大避坑指南

双目三维重建从标定到体积测量:误差链分析及5大避坑指南

简介:一套聚焦三维重建完整链路的学习型示例工程,面向计算机视觉入门者以及机器人导航、增强现实方向的开发者,解决摄像头标定、双目立体校正和点云体积计算中的核心算法落地问题,整体使用C实现,便于理解底层计算过程。…

2026/10/19 6:06:39 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

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

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →