Windows SDK 8.1 离线安装包完整指南:从组件选型到静默部署
简介Windows SDK 8.1离线安装包面向需要在无网络环境下搭建Windows开发环境、或安装SQL Server 2012时遭遇依赖缺失的开发者与运维人员。它整合了编译器与构建工具、WinDbg等调试工具、API参考文档、示例代码模板、性能分析器及Windows Runtime组件可满足组件安装、自定义存储过程开发、数据库引擎优化顾问与Integration Services调试等场景。资源包共156个文件以104个cab、29个msi、20个msp等安装组件为主另含2个exe主程序与1个xml配置整体约642.67MB解压后按指南先运行dotNetFx45_Full_x86_x64.exe部署.NET Framework 4.5再执行主安装程序即可完成部署。目前已有16452人学习下载适合需要离线解决SQL Server 2012环境依赖、并希望一次性获取完整SDK工具链的中高级开发者参考使用。1. 为什么 2024 年还有人死磕 Windows SDK 8.1 离线安装包如果你在维护一条老产线、一台不联网的工控机或者要给 Win7/Win8.1 时代的 C 项目补一个编译环境就会撞上这个标题里的东西Windows SDK 8.1 离线安装包。它不是一个能双击下一步就完事的 exe而是一整套需要手动挑组件、手动喂给安装器、还得处理 .NET 依赖的离线介质。在线装的时候微软的 web installer 会自己拉包一旦断网或者目标机器在隔离网段那套流程直接卡死报错还特别含糊。我最近一次碰到它是给一台跑着老式运动控制卡的 Win7 SP1 机器补 SDK机器不能连外网U 盘拷进去的在线安装器转两圈就提示下载失败。这类场景下离线安装包就是唯一的后悔药。这篇笔记面向三类人要给老系统补编译环境的 C 工程师、做工业现场交付的实施、以及需要批量部署开发机的运维。下面从介质怎么准备、组件怎么选、命令怎么敲一路讲到踩过的坑尽量让你照着能复现。2. Windows SDK 8.1 离线安装包到底装了什么组件拆解与选型2.1 在线安装器和离线介质的本质区别很多人第一次接触会以为「离线安装包」就是官网那个 sdksetup.exe其实不是。官网默认给的是 web installer它本体只有几 MB运行时才去微软的 CDN 拉真正的 cab 包。离线场景要的是把这些 cab 全部预先落地再让安装器从本地读。Windows SDK 8.1 的离线介质通常是一个 ISO或者一个解压后的目录树里面按组件分文件夹存放 .msi 和 .cab。理解这一点很关键因为它决定了你后面所有操作你不是在「安装一个软件」而是在「给一个安装器准备本地源」。安装器本身还是那个 sdksetup.exe只是通过参数告诉它别去网上找去你指定的目录找。这也是为什么很多人把 ISO 挂载了、双击 setup 还是失败——它默认行为仍然是联网。SDK 8.1 的组件大致分几块Windows 头文件和库Windows Headers and Libraries、.NET Framework 4.5.1 的 SDK 部分、调试工具Debugging Tools for Windows、Windows Performance Toolkit、以及一堆可选的示例和工具。对绝大多数 C 项目来说真正必须的是头文件和库加上调试工具其余可以砍掉能省下好几个 G 的空间和大量安装时间。2.2 哪些组件必须装哪些可以砍选组件这件事装多了浪费磁盘和安装时间装少了编译直接报缺头文件。我一般按下面的原则来分组件是否必装说明Windows Headers and Libraries必装编译 Win32 程序的核心缺了连 windows.h 都找不到.NET Framework 4.5.1 SDK视项目纯 C 项目可不装涉及托管互操作再装Debugging Tools for Windows强烈建议调试和 dump 分析要用现场排障离不开Windows Performance Toolkit可选做性能分析才需要普通编译用不上Sample Code / Tools可选学习用生产环境一般跳过判断标准很简单先看你的项目 include 了哪些头、链接了哪些 lib。如果只是标准 Win32 MFC头文件和库加调试工具就够了。如果项目里有 C/CLI 或者调用 .NET 组件再把 .NET SDK 勾上。砍组件的时候注意某些工具之间存在隐式依赖比如调试工具依赖部分运行库别一刀切全取消。2.3 版本匹配SDK 8.1 和 VS 版本的对应关系这是最容易翻车的地方。Windows SDK 8.1 官方对应的是 Visual Studio 2013但很多人想拿它配 VS2015、VS2017 甚至 VS2022。能不能用能但有条件。VS2015 之后的工具集默认用更新的 SDK你要在项目属性里手动把「Windows SDK 版本」指到 8.1同时确保平台工具集兼容。需要提醒的是SDK 8.1 的目标系统最低是 Windows 7它编译出来的程序在 Win7 上跑没问题。但如果你用 VS2022 配 SDK 8.1某些新语法和新运行库可能对不上链接阶段会报符号找不到。我的经验是老项目配老工具集最稳VS2013 SDK 8.1 是官方验证过的组合非要用新 IDE就做好手动调工具集和 SDK 路径的准备。3. 拿到离线介质后怎么落地从挂载到静默安装3.1 校验介质完整性再动手离线介质最怕的是拷贝过程中损坏尤其是几个 G 的 ISO 经过 U 盘、网盘几道转手。装之前先校验哈希别嫌麻烦这一步能帮你排除掉一大半「装到一半报错」的玄学问题。Windows 自带 certutil 就能算:: 计算 ISO 的 SHA256和官方或来源方给的哈希对比 certutil -hashfile D:\SDK8.1_offline.iso SHA256 :: 如果是解压后的目录可以逐个校验关键 cab 包 certutil -hashfile D:\SDK8.1\WindowsSDK\cab1.cab SHA256逻辑说明certutil 是 Windows 内置命令不需要额外装工具适合在隔离机器上直接用。参数-hashfile后面跟文件路径再跟算法名。算出来的哈希和来源方提供的对比不一致就重新拷别硬装。注意哈希算法要和来源方声明的一致别人给的是 MD5 你算 SHA256 是对不上的。3.2 挂载 ISO 或解压到本地目录如果拿到的是 ISOWin8 及以上可以直接右键挂载Win7 需要虚拟光驱工具。挂载后会多出一个盘符里面通常有 setup.exe 和一堆组件目录。如果拿到的是压缩包解压到一个路径里没有中文、没有空格的目录比如D:\SDK8.1\。路径带空格或中文是安装器报错的常见原因别问我是怎么知道的。:: 用 PowerShell 挂载 ISO适合脚本化批量部署 $iso Mount-DiskImage -ImagePath D:\SDK8.1_offline.iso -PassThru $drive ($iso | Get-Volume).DriveLetter Write-Host 挂载到 $drive 盘 :: 用完卸载 Dismount-DiskImage -ImagePath D:\SDK8.1_offline.iso逻辑说明Mount-DiskImage 是 Win8 之后才有的 cmdletWin7 上跑不了老系统还是老老实实用虚拟光驱。-PassThru让命令返回对象方便后续取盘符。参数-ImagePath指向 ISO 绝对路径。批量部署时把这段包进脚本比手动点挂载可靠得多。3.3 用命令行指定本地源做静默安装图形界面安装器在无人值守场景下不好用推荐直接用命令行。SDK 8.1 的 setup 支持指定本地安装源和要装的组件特性feature。下面是一个典型调用:: 从本地目录安装指定要装的组件静默执行 D:\SDK8.1\setup.exe /features OptionId.WindowsDesktopDebuggers OptionId.WindowsDesktopSoftwareDevelopmentKit ^ /source D:\SDK8.1\packages ^ /quiet /norestart /log D:\sdk_install.log逻辑说明/features后面跟要安装的组件 ID多个用空格分隔/source指向本地包目录这是离线安装的核心告诉安装器别联网/quiet静默无界面/norestart装完不自动重启方便你控制节奏/log把安装日志写到指定文件出问题第一时间看它。参数里的^是 cmd 的换行符写成一行也行。组件 ID 不是随便写的得用安装器认识的 OptionId。常见的几个OptionId.WindowsDesktopSoftwareDevelopmentKit对应头文件和库OptionId.WindowsDesktopDebuggers对应调试工具OptionId.NetFxSoftwareDevelopmentKit对应 .NET SDK。写错了安装器会忽略或者报未知特性日志里能看到。3.4 安装日志怎么读装完别急着关窗口先看日志。日志里会逐条记录每个组件的安装结果成功是 success失败会带错误码。常见的失败原因有几类源目录里缺某个 cab、目标机器缺前置的 .NET 版本、权限不够。定位到具体组件后单独补装那一个往往比整体重装快。:: 在日志里搜失败和错误关键字 findstr /I error fail return D:\sdk_install.log :: 看安装结果汇总 findstr /I success installed D:\sdk_install.log逻辑说明findstr 的/I忽略大小写因为日志里大小写不统一。先搜 error/fail 定位问题再搜 success 确认哪些装上了。如果日志里全是 success 但编译还是找不到头文件那多半是环境变量或者 VS 里的 SDK 路径没配对问题不在安装本身。4. 装完编译还是报错环境变量与 VS 集成排查4.1 确认头文件和库的真实落盘位置SDK 装完后头文件一般在C:\Program Files (x86)\Windows Kits\8.1\Include\下库在...\Lib\下。先确认这些目录真的存在、里面有东西。有时候安装器报成功但实际只装了个壳目录是空的这种情况在源介质不完整时会出现。:: 列出 SDK 的 include 和 lib 目录确认内容 dir C:\Program Files (x86)\Windows Kits\8.1\Include\um /b dir C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64 /b逻辑说明/b只列文件名输出干净。um 目录放的是用户模式头文件winv6.3 是 SDK 8.1 对应的内核版本号目录。如果这两个目录是空的或者不存在说明安装没真正落地回去检查源介质和安装日志。4.2 在 VS 里把 SDK 版本指对VS 项目默认用哪个 SDK由项目属性里的「Windows SDK 版本」决定。装了 SDK 8.1 不代表项目就会用它。右键项目 → 属性 → 常规 → Windows SDK 版本选 8.1。如果下拉里没有 8.1说明 VS 没识别到可能是安装时没勾选对应的 VS 集成组件或者需要修复安装。对于 VS2017 之后的版本SDK 是通过 Visual Studio Installer 管理的手动装的 SDK 8.1 可能不会自动出现在下拉里。这时候可以手动改 vcxproj 文件里的WindowsTargetPlatformVersion字段指向 8.1 的版本号。改之前备份项目文件改错了容易打不开。4.3 环境变量和 PATH 的坑有些老构建脚本依赖WindowsSdkDir这个环境变量。SDK 8.1 安装器一般会设置它但如果机器上装过多个版本 SDK这个变量可能被后装的覆盖。构建时报找不到 rc.exe 或者 mt.exe多半就是 PATH 里指向了错误的 SDK 版本。:: 查看当前 SDK 相关环境变量 set | findstr /I sdk :: 临时把 8.1 的 bin 目录加到 PATH 前面 set PATHC:\Program Files (x86)\Windows Kits\8.1\bin\x86;%PATH%逻辑说明set | findstr快速看当前会话里所有含 sdk 的变量。临时改 PATH 只对当前命令行窗口有效适合验证问题是不是出在 PATH 上。确认是 PATH 问题后再去系统环境变量里做永久修改别在临时窗口里改完就以为好了。5. 离线安装 Windows SDK 8.1 的避坑清单5.1 坑一在线安装器在隔离网段反复重试后失败现象双击 setup.exe 后进度条卡住过一会儿提示下载失败或超时日志里全是连接 CDN 的记录。原因用的是 web installer它默认行为就是联网拉包隔离网段根本连不上重试几次后放弃。解决换成离线介质并且用/source参数显式指定本地包目录。如果手上只有在线安装器可以在一台能联网的机器上先跑一遍把它的下载缓存目录整个拷出来当本地源但这样拿到的组件可能不全不如直接用官方 ISO 靠谱。5.2 坑二安装路径含中文或空格导致组件注册失败现象安装过程看似正常但装完 VS 里找不到 SDK或者编译时报路径相关的奇怪错误。原因部分组件的注册脚本对路径里的中文和空格处理不好尤其是老版本的安装器。解决把离线介质解压到纯英文、无空格的短路径比如D:\SDK81\。安装目标路径也尽量用默认的C:\Program Files (x86)\Windows Kits\8.1\别自定义到奇怪的地方。5.3 坑三缺 .NET Framework 4.5.1 前置导致部分组件装不上现象头文件和库装上了但调试工具或者 .NET SDK 部分报错日志里提示需要某个 .NET 版本。原因SDK 8.1 的部分组件依赖 .NET Framework 4.5.1隔离机器上如果没装这个运行库对应组件就装不上。解决提前把 .NET Framework 4.5.1 的离线安装包也准备好先装它再装 SDK。注意 4.5.1 和 4.5 不是一回事别装错版本。装完可以用注册表或者dotnet --list-runtimes确认版本。5.4 坑四多版本 SDK 共存时环境变量被覆盖现象机器上原本有更新的 SDK装了 8.1 之后新项目编译反而报错或者老项目突然找不到 8.1 的头文件。原因WindowsSdkDir等环境变量是全局的后装的 SDK 会覆盖先装的导致所有项目都指向同一个版本。解决不要依赖全局环境变量在项目属性里显式指定 SDK 版本。构建脚本里如果需要特定版本在脚本开头临时设置 PATH 和WindowsSdkDir别改系统级的。多版本共存是常态靠项目级配置隔离才稳。5.5 坑五静默安装参数写错导致装了个空壳现象命令行安装很快结束日志显示成功但 SDK 目录几乎是空的。原因/features里的组件 ID 写错安装器不认识就跳过了或者/source路径不对它找不到包但没报致命错误。解决先用不带/quiet的命令跑一遍看图形界面里组件列表和实际安装情况确认 ID 和源路径都对再加/quiet。日志里搜OptionId能看到安装器实际识别了哪些特性。6. 批量部署与验证把 SDK 8.1 塞进自动化流程单台机器手动装一次就够了但如果你要给一个机房或者一条产线的几十台机器补环境手动点不现实。我的做法是把整个流程脚本化核心是三步校验介质、静默安装、验证结果。echo off setlocal set SDK_SOURCED:\SDK81\packages set SDK_SETUPD:\SDK81\setup.exe set LOGD:\sdk_install_%COMPUTERNAME%.log :: 1. 校验关键包是否存在 if not exist %SDK_SOURCE% ( echo 源目录不存在检查介质 exit /b 1 ) :: 2. 静默安装指定组件和本地源 %SDK_SETUP% /features OptionId.WindowsDesktopSoftwareDevelopmentKit OptionId.WindowsDesktopDebuggers ^ /source %SDK_SOURCE% /quiet /norestart /log %LOG% :: 3. 验证头文件是否落地 if exist C:\Program Files (x86)\Windows Kits\8.1\Include\um\windows.h ( echo SDK 8.1 安装成功 ) else ( echo 安装异常查看日志 %LOG% exit /b 2 ) endlocal逻辑说明脚本先检查源目录避免对着空目录白装然后静默安装只装头文件库和调试工具这两个核心组件最后用windows.h是否存在作为成功判据比看安装器返回码更直接。参数%COMPUTERNAME%让每台机器的日志分开方便排查是哪台出的问题。这个脚本可以挂到域策略或者部署工具里批量跑。验证环节除了看文件还建议实际编译一个最小程序确认工具链真的能用:: 用 SDK 8.1 的 cl.exe 编译一个最小 Win32 程序 call C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat x86 cl /nologo minimal.cpp /link user32.lib逻辑说明vcvarsall.bat 会设置好编译器、链接器和 SDK 路径x86指定目标架构。编译一个只调用 MessageBox 的最小程序能跑通说明头文件、库、链接器全链路正常。这一步比任何日志都可信我一般把它作为交付前的最后一道验证。一个习惯每次交付前我都会在目标机器上留一份安装日志和这个最小验证程序的编译结果出问题时能快速判断是环境没装好还是项目本身的问题。离线环境没有后悔药能提前验证的绝不省。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

免费论文查重与AIGC检测工具Paperzz使用指南

免费论文查重与AIGC检测工具Paperzz使用指南

1. 项目概述:当论文查重遇上AIGC检测最近在帮几个本科生朋友看论文时,发现他们普遍面临两个头疼问题:一是传统查重工具费用高且结果不直观,二是现在学校开始要求检测AI生成内容(AIGC)。市面上能同时解决这两…

2026/10/13 6:21:46 阅读更多 →
OpenObserve:比Elasticsearch更省资源的开源日志分析工具

OpenObserve:比Elasticsearch更省资源的开源日志分析工具

1. 开源日志分析新选择:OpenObserve深度解析最近在技术社区里,一个名为OpenObserve的开源项目引起了我的注意。作为长期使用ELK(ElasticsearchLogstashKibana)栈的运维工程师,第一次看到"比Elasticsearch省内存且…

2026/10/13 6:21:46 阅读更多 →
机器人嵌入式岗位重新定价:STM32、RTOS与Linux能力价值重排

机器人嵌入式岗位重新定价:STM32、RTOS与Linux能力价值重排

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

2026/10/13 6:21:46 阅读更多 →

最新新闻

Java 项目部署之 Docker工具快速入门: 自定义镜像的分层结构与写时复制

Java 项目部署之 Docker工具快速入门: 自定义镜像的分层结构与写时复制

概述 自己写的 Spring Boot 服务,DockerHub 上不会有人替你构建镜像,必须自己来。而要自己构建,先得搞清楚一个镜像内部到底是怎么堆起来的——这一篇只讲结构,不讲语法。 纲要 从"镜像是什么"这句话里拆出组成与顺序…

2026/10/13 7:04:56 阅读更多 →
mcporter 在 Windows 与 WSL 下的实战指南:绕过 NTFS/DrvFs 限制、稳定跑通测试与 CLI 生成

mcporter 在 Windows 与 WSL 下的实战指南:绕过 NTFS/DrvFs 限制、稳定跑通测试与 CLI 生成

【免费下载链接】mcporter Call MCPs via TypeScript, masquerading as simple TypeScript API. Or package them as cli. 项目地址: https://gitcode.com/gh_mirrors/mc/mcporter 点击查看 免费下载 本文是 mcporter 项目在 Windows 与 WSL(Windows Su…

2026/10/13 7:04:56 阅读更多 →
工业互联网技术体系落地指南:从分层架构到五大避坑经验

工业互联网技术体系落地指南:从分层架构到五大避坑经验

简介:《工业互联网-工业互联网技术体系.pptx》是一份聚焦工业互联网整体架构的演示文稿,面向工业互联网初学者、相关专业师生及企业技术人员,以“技术—生命”为主线梳理制造技术、信息技术与融合技术如何共同构成体系,并支撑制造…

2026/10/13 7:04:56 阅读更多 →
PS5 M.2 SSD扩容与硬件维护:兼容性、散热与排坑实战

PS5 M.2 SSD扩容与硬件维护:兼容性、散热与排坑实战

上个月,朋友搬来一台 PS5,说系统一直提示“无法使用此 M.2 SSD”。我把他那块在电脑上跑得好好的 PCIe 4.0 固态装进自己的机器里,格式化后居然一切正常。这个反差让我意识到,官方兼容列表其实只是“保证可用”的下限,…

2026/10/13 7:04:56 阅读更多 →
Unity Shader入门精要第一道坎:渲染流水线到底是什么?

Unity Shader入门精要第一道坎:渲染流水线到底是什么?

1.先整体了解一下什么是渲染流水线?1.1该从哪里下手所以,什么是渲染流水线?我们不妨将这个问题拆成两个问题,既什么是渲染,什么是流水线。1.2什么是渲染渲染是一种工作流程,通过一系列图形阶段,…

2026/10/13 7:04:56 阅读更多 →
GPT-5.6 写基金申请书怎么能这么好用!

GPT-5.6 写基金申请书怎么能这么好用!

各位同仁好,我是七哥。一个在高校里从事人工智能 相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude 等大模型 学术实操相关问题,多多交流,相互成就,共同进步。 第一次冲击国家级重大项目的研究者,多数不是输在选题不够重要,也…

2026/10/13 7:03:56 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →