Visual Studio 2022编译路径配置全解析:从核心概念到企业级最佳实践
1. 项目概述为什么编译路径配置是项目管理的基石在Visual Studio 2022里新建一个项目点击“生成解决方案”然后去项目文件夹里翻找生成的exe或dll这几乎是每个C/C#开发者都做过的事。但你是否曾疑惑过为什么Debug版本的可执行文件默认就在项目根目录的Debug文件夹里而Release版本却在另一个地方或者当你的解决方案包含十几个项目每个项目都输出到自己的目录导致最终发布时需要从各个角落收集文件时那种混乱感是否让你头疼过这背后就是编译路径配置在起作用。配置工程的输出目录和中间目录远不止是改个文件夹名字那么简单。它直接关系到你的开发流程是否顺畅、团队协作是否高效、以及最终部署是否可靠。一个合理的路径规划能让你的解决方案结构清晰像一本整理好的书章节分明而混乱的路径则像一堆胡乱堆放的草稿找什么都费劲。对于个人开发者这关乎效率对于团队这关乎规范和可维护性。很多项目后期出现的“在我机器上能跑”的经典问题其根源往往就埋藏在早期这些看似不起眼的路径配置里。本文将深入拆解VS2022中编译路径的配置逻辑不仅告诉你每个配置项在哪里、怎么改更重要的是解释“为什么要这么改”。我会结合多年管理大型跨平台解决方案的经验分享从默认配置到企业级最佳实践的演进路径包括如何统一管理多项目输出、如何为持续集成优化路径、以及那些官方文档里不会写的“踩坑”实录。无论你是刚接触VS的新手还是希望优化现有项目结构的老鸟这里都有你需要的干货。2. 编译路径核心概念全解析在动手修改之前我们必须先理解Visual Studio中几个核心的目录概念。很多人改了半天的“输出目录”最后发现生成的程序集不在预期位置问题往往出在概念混淆上。2.1 输出目录 vs. 中间目录职责分离的艺术这是最核心的一对概念。Visual Studio将编译过程产生的文件明确分为两类并为其指定了不同的“归宿”这是一种经典的“职责分离”设计思想。输出目录顾名思义是最终产出的、可供直接使用或分发的文件的存放地。对于可执行项目如控制台应用、WinForms应用这通常就是你的.exe文件对于类库项目这就是.dll文件。此外伴随主输出文件一起的还有程序数据库文件.pdb用于调试、XML文档文件如果开启了生成等。这个目录下的文件是“干净”的、最终的构建产物。在团队开发中我们经常从这个目录获取文件进行集成测试或发布。中间目录则是编译过程中的“工作车间”。这里存放的是编译的中间产物例如.obj或.o文件由每个.cpp或.c文件编译生成的目标文件。预编译头文件.pch。资源编译的中间文件。日志和其他临时生成的文件。中间目录的文件是临时性的、依赖于特定配置如Debug/Release和平台的。每次执行“重新生成”操作时这个目录通常会被清理。将中间文件与最终输出文件分开有两大核心好处第一是清洁你的最终输出目录不会被一堆.obj文件污染第二是效率当只修改了部分源代码时增量编译可以只重新编译相关的.obj文件而不会影响其他文件这得益于中间目录的稳定存在。注意一个常见的误解是修改“输出路径”就能改变所有生成文件的位置。实际上像.obj这样的中间文件是由“中间目录”控制的。如果你希望一次清理所有生成文件需要同时清理输出目录和中间目录。2.2 解决方案配置与平台路径配置的维度在VS2022的属性页中你会看到配置Configuration和平台Platform这两个下拉框。它们共同定义了一个构建的“维度”而路径配置是依附于这些维度的。配置最常见的是Debug和Release。Debug配置包含完整的符号调试信息、关闭大部分优化以便于调试Release配置则开启优化、去除调试信息追求性能和尺寸。理所当然这两种配置的产出物应该放在不同的目录避免互相覆盖。你完全可以自定义配置如Debug_Static、Release_Profiling等。平台指的是目标CPU架构如x8632位、x6464位、ARM、ARM64等。不同平台编译出的二进制文件互不兼容因此它们的输出也必须分开。因此一个典型的路径模式是$(SolutionDir)bin\$(Configuration)\$(Platform)\。假设你的解决方案叫MyApp配置为Release平台为x64那么最终输出路径就会展开为[解决方案目录]\bin\Release\x64\。这种模式清晰地将不同维度做什么用、给谁用的构建产物隔离是实践中的黄金标准。2.3 宏的妙用让配置灵活而统一在路径配置框中你会经常看到以$()包裹的字符串如$(ProjectDir),$(SolutionDir),$(Configuration),$(Platform)等这些就是Visual Studio的预定义宏。它们是在编译时由MSBuild系统解析的动态变量。使用宏的好处是抽象和一致性。你不必为Debug|x64和Release|x86分别写死两条路径。只需配置一条像$(SolutionDir)Output\$(Configuration)\$(Platform)\这样的路径它就能自动适应所有配置和平台组合。这极大地减少了配置错误和维护工作量。你可以通过属性页编辑框右侧的“编辑”按钮下拉菜单查看所有可用的宏及其当前展开的值。3. 配置实战从界面操作到项目文件理解了概念我们进入实操环节。VS2022提供了图形界面和直接编辑项目文件两种方式各有优劣。3.1 通过项目属性页进行配置推荐新手这是最直观的方式。右键点击项目 - “属性”打开项目属性页。定位配置位置对于“输出目录”请导航到“配置属性” - “常规” - “输出目录”。对于“中间目录”请导航到“配置属性” - “常规” - “中间目录”。理解属性页的“作用域”注意属性页左上角的下拉框。如果你在这里修改了路径这个修改是**针对当前选中的“配置”和“平台”**的。例如你当前选的是Debug|x64那么修改只对Debug|x64生效。如果你想为所有配置设置相同的父目录规则使用宏如$(Configuration)是最好的选择无需逐个配置修改。常用路径模式示例经典隔离模式$(SolutionDir)bin\$(Configuration)\$(Platform)\输出目录$(SolutionDir)obj\$(Platform)\$(Configuration)\中间目录。这是许多开源项目和团队规范的首选它将所有项目的最终输出集中到解决方案级的bin目录下按配置和平台细分结构一目了然。项目独立模式$(ProjectDir)bin\$(Configuration)\$(Platform)\。这种模式下每个项目的输出都在自己的项目文件夹内适合项目间耦合度低、独立性强的情况。扁平化输出慎用$(SolutionDir)bin\。所有配置和平台的输出都混在一起极易造成文件覆盖仅适用于极简单的单人项目或特定脚本场景不推荐。实操心得我强烈建议团队项目采用“经典隔离模式”。它带来的最大好处是当你签出代码并构建后可以在[SolutionDir]\bin\Debug\x64\下一个地方找到所有可执行文件和库而不是去十几个项目文件夹里分别找。这对于调试、打包和自动化脚本编写是巨大的便利。3.2 直接编辑 .vcxproj 或 .csproj 文件进阶选择对于需要批量修改、版本控制或实现更复杂逻辑的情况直接编辑项目文件更高效。项目文件本质上是MSBuild的脚本。在解决方案资源管理器中右键项目 - “卸载项目”然后再次右键 - “编辑 [项目名].vcxproj”C或“.csproj”C#。在Project根节点下你会找到各种PropertyGroup标签。这些属性组通常通过Condition属性来指定生效的配置和平台。例如PropertyGroup Condition$(Configuration)|$(Platform)Debug|x64 OutDir$(SolutionDir)bin\$(Configuration)\$(Platform)\/OutDir IntDir$(SolutionDir)obj\$(Platform)\$(Configuration)\/IntDir /PropertyGroup你也可以定义不带条件的PropertyGroup其中的属性将对所有配置生效。但更常见的做法是定义一个公共属性组然后被特定配置组继承或覆盖。高级技巧统一多项目配置。如果你有几十个项目需要统一输出目录逐个修改非常痛苦。此时可以使用Directory.Build.props文件在解决方案根目录或任何父目录创建此文件。在其中定义的属性如OutDir会被该目录及其所有子目录下的项目自动继承。这是管理企业级大型解决方案配置的终极利器。!-- Directory.Build.props 示例 -- Project PropertyGroup !-- 为所有子项目设置统一的输出和中间目录基准 -- SolutionDir Condition$(SolutionDir) $(MSBuildThisFileDirectory)..\/SolutionDir BaseOutputPath$(SolutionDir)bin\/BaseOutputPath BaseIntermediateOutputPath$(SolutionDir)obj\/BaseIntermediateOutputPath /PropertyGroup /Project然后在各个项目的属性组中可以基于这些基准路径进一步细化OutDir$(BaseOutputPath)$(Configuration)\$(Platform)\/OutDir。4. 多项目解决方案的路径架构设计单个项目的路径配置是基础真正的挑战来自于包含客户端、服务端、多个公共库的复杂解决方案。一个糟糕的路径设计会让依赖管理和调试变成噩梦。4.1 依赖项目的引用与输出定位假设你的解决方案结构如下MySolution.sln ├── MyApp/ (可执行程序依赖MyLib) │ └── MyApp.vcxproj └── MyLib/ (静态库/动态库) └── MyLib.vcxproj当MyApp项目引用MyLib项目时在编译MyApp时MSBuild需要知道去哪里找MyLib生成的.lib导入库和.dll运行时。这个路径就是通过MyLib的输出目录来传递的。最佳实践为所有项目设置统一的、基于解决方案目录的输出模式如前文所述的$(SolutionDir)bin\$(Configuration)\$(Platform)\。在MyApp的项目引用中VS和MSBuild会自动将MyLib的输出目录添加到MyApp的库目录搜索路径中。这意味着只要所有项目遵循同一套输出规则它们就能自动找到彼此。对于动态库DLL还需要确保运行时能定位。调试时VS会自动将依赖项目的输出目录添加到可执行文件的调试环境PATH中。但发布时你需要手动将DLL复制到可执行文件旁边或将其所在目录加入系统PATH。4.2 设计清晰的解决方案级目录结构一个规划良好的解决方案其物理目录结构应该反映其逻辑架构。我推荐的标准结构如下MySolution/ ├── .vs/ (VS临时文件加入.gitignore) ├── bin/ (所有最终输出按配置平台细分加入.gitignore) │ ├── Debug/ │ │ ├── x64/ │ │ └── x86/ │ └── Release/ │ ├── x64/ │ └── x86/ ├── obj/ (所有中间文件加入.gitignore) │ ├── x64/ │ │ ├── Debug/ │ │ └── Release/ │ └── x86/ │ ├── Debug/ │ └── Release/ ├── libs/ (放置第三方预编译库如SDL2.lib, boost) │ ├── include/ │ └── lib/ │ ├── x64/ │ └── x86/ ├── src/ (源代码) │ ├── MyApp/ │ │ ├── MyApp.vcxproj │ │ └── (源代码文件) │ └── MyLib/ │ ├── MyLib.vcxproj │ └── (源代码文件) ├── docs/ (文档) ├── scripts/ (构建、部署脚本) ├── Directory.Build.props (统一构建属性) └── MySolution.sln这种结构将源代码src、构建产出bin,obj、外部依赖libs、文档和脚本严格分离。.gitignore文件应忽略bin、obj、.vs目录保证版本库中只存放源代码和必要的项目文件、资源文件。任何克隆该仓库的人都能通过执行构建在bin目录下获得完全一致的产出。4.3 与持续集成/持续部署流水线的对接在现代开发中编译往往不是在开发者的机器上完成的而是在Jenkins、GitLab CI、Azure DevOps等CI/CD服务器上。清晰的路径配置对此至关重要。构建代理的工作空间CI服务器会为每次构建创建一个干净的工作目录。你的路径配置不应包含任何绝对路径如C:\MyProjects\...必须全部使用基于解决方案或项目的相对路径宏$(SolutionDir),$(ProjectDir)。这样构建才能在任意位置正确运行。产出物收集CI流水线在编译后需要将特定的产出物如安装包、发布版的DLL/EXE归档或发布。如果你将所有输出统一到了$(SolutionDir)bin\$(Configuration)\$(Platform)\那么CI脚本中收集产物的步骤就会非常简单且稳定例如复制**\bin\Release\x64\*.exe和**\bin\Release\x64\*.dll。缓存优化一些CI系统支持缓存目录以加速后续构建。你可以将$(SolutionDir)obj\目录缓存起来因为其中包含了耗时的编译中间结果。但bin目录通常不缓存因为它包含最终产出。5. 疑难杂症与深度排查指南即使配置看似正确你也可能会遇到各种奇怪的问题。下面是一些常见陷阱及其解决方案。5.1 编译成功但找不到输出文件这是最典型的问题。请按以下步骤排查确认当前活动配置检查VS主工具栏上的“解决方案配置”和“解决方案平台”下拉框。你修改的可能是Debug|x64的路径但当前活动配置是Release|x86那么生成的文件自然会去Release\x86的目录下找。检查生成后事件在项目属性 - “生成事件” - “生成后事件”中可能有一条命令将输出文件移动或复制到了其他地方。检查命令行。查看详细生成输出在“输出”窗口视图 - 输出将显示从“调试”切换到“生成”。重新构建项目观察输出日志。日志中会明确显示“正在创建目录…”和“正在将输出复制到…”等信息其中就包含了完整的路径。这是最可靠的诊断依据。检查项目类型对于“Windows桌面向导”创建的项目有时会默认使用一种较新的项目模板其输出路径逻辑可能与旧式项目稍有不同。始终以属性页和生成输出日志为准。5.2 清理或重新生成后文件残留你执行了“清理”但bin或obj目录下还有些文件没删掉。自定义生成后事件如果你在生成后事件中执行了复制文件到输出目录的操作这些被复制进来的文件不会被VS的清理操作自动删除。清理操作只删除MSBuild已知的、由编译任务生成的文件。手动添加的文件任何你手动放入bin或obj目录的文件清理时都不会被触动。解决方案要么避免将非生成文件放入这些目录要么编写自定义的“清理后事件”命令行来删除它们要么接受手动删除。5.3 路径宏未按预期展开你配置了$(SolutionDir)..\Output\但发现它好像没生效。宏的作用域有些宏如$(SolutionDir)仅在打开解决方案文件.sln时才有定义。如果你直接双击.vcxproj文件打开单个项目$(SolutionDir)可能为空或指向奇怪的位置。始终通过解决方案文件打开项目。拼写错误宏名是大小写敏感的且必须被$()包围。$(solutiondir)和$(SOLUTIONDIR)都是无效的。在编辑器中查看展开值在属性页的路径编辑框点击下拉箭头 - “编辑”可以打开宏浏览器查看所有宏及其当前展开的完整路径这是最直接的调试方式。5.4 多配置开发时的路径管理技巧如果你经常在Debug和Releasex86和x64之间切换以下技巧能提升效率使用配置管理器在标准工具栏上点击“解决方案配置”下拉框 - “配置管理器”。在这里你可以一次性为解决方案中的所有项目批量设置活动配置和平台并勾选哪些项目需要被生成。这比逐个项目修改要快得多。为常用组合创建解决方案配置除了标准的Debug和Release你可以创建自定义配置如Debug_StaticLink。在配置管理器中点击“活动解决方案配置”下拉框 - “新建”然后为每个项目指定基于此新配置要使用的项目配置可以映射到已有的Debug配置。这样你就可以为特定用途如静态链接调试定义一套独立的路径和编译选项。环境变量覆盖在高级场景中你可以通过设置系统或用户环境变量如MyCustomOutDir并在项目文件中使用$(MyCustomOutDir)来引用它。这允许你在不修改项目文件的情况下通过改变环境变量来动态切换输出位置非常适用于复杂的多环境构建脚本。配置编译路径就像为你的项目规划仓库和流水线。前期多花几分钟思考并设定一个清晰的规则后期就能节省大量查找、调试和整合文件的时间。尤其是在团队协作和自动化构建的环境中一套一致、可预测的路径约定是工程专业性的重要体现。从我经历过的项目来看凡是输出路径混乱的其代码依赖和构建脚本也往往是一团乱麻而路径清晰的整个项目的可维护性都会高出一个档次。不妨现在就检查一下你手头的项目看看它的输出目录是否“讲述”了一个清晰的故事。

相关新闻

从Docker容器入门到生产实践:核心原理、网络数据与安全优化全解析

从Docker容器入门到生产实践:核心原理、网络数据与安全优化全解析

1. 从“Hello World”到“生产环境”:一个容器练习者的心路历程如果你在搜索引擎里敲下“docker容器练习”这几个字,大概率是想找个教程,跟着敲几条命令,让一个Nginx或者Redis跑起来,然后看着屏幕上“Hello World”或者…

2026/10/14 23:31:50 阅读更多 →
CentOS 7安装JDK 21完整指南:环境变量配置与生产环境实践

CentOS 7安装JDK 21完整指南:环境变量配置与生产环境实践

1. 项目概述:为什么在CentOS 7上安装JDK 21是个技术活? 最近在给一台老旧的测试服务器部署新的Java应用,环境是经典的CentOS 7。项目要求必须使用JDK 21,说是要用上最新的虚拟线程特性。我一开始觉得这还不是手到擒来&#xff1f…

2026/10/15 7:40:59 阅读更多 →
Blender免费材质模型资源库全攻略:从PBR原理到高效搜索管理

Blender免费材质模型资源库全攻略:从PBR原理到高效搜索管理

1. 从零到一:为什么你需要一个专属的材质模型库如果你刚开始接触Blender,或者已经用它做过几个项目,那你一定遇到过这样的场景:脑子里有个绝妙的创意,打开软件,建好基础模型,然后……卡住了。面…

2026/10/15 7:17:28 阅读更多 →

最新新闻

2026年10月北京市联通宽带实测办理避坑全攻略

2026年10月北京市联通宽带实测办理避坑全攻略

上个月我翻了一下家里的宽带账单,一年算下来花了快两千块。很多人有个反常识的误区,觉得宽带资费越贵,网速就绝对越快。其实我拿着四家运营商的账单横向对比后发现,花双倍钱办的千兆宽带,实际体验甚至不如邻居办的五百…

2026/10/15 7:40:00 阅读更多 →
AVP-Loc地下车库定位方案:PCA、ICP与ESKF融合实战

AVP-Loc地下车库定位方案:PCA、ICP与ESKF融合实战

1. 从泊车场景说起:AVP-Loc到底在解决什么问题自动代客泊车(Automated Valet Parking,AVP)这个场景,说白了就是让车自己去找车位、自己停进去,全程不需要人坐在驾驶位上。听起来很美好,但真正做…

2026/10/15 7:40:00 阅读更多 →
Poppy协议:面向AI代理的身份声明与交互范式革新

Poppy协议:面向AI代理的身份声明与交互范式革新

我无法根据当前输入内容生成符合要求的博文。原因如下:输入中仅提供了项目标题“Sierra发布Poppy协议:AI代理终于不用再假装人类了”,但未提供任何实际可用的项目正文、关键词列表或摘要描述。所有后续字段(相关热搜词、最新网络热…

2026/10/15 7:40:00 阅读更多 →
FreeRTOS到Zephyr:BLE工程师迁移实战与认知重构

FreeRTOS到Zephyr:BLE工程师迁移实战与认知重构

我前前后后带团队迁移过几个 BLE 项目,从单模 Beacon 到复杂的多连接网关都有。很多工程师第一次接触 Zephyr 时,最大的感受不是“难”,而是“别扭”——明明都是写嵌入式,怎么连个 GPIO 都要过一遍设备树?这种别扭的根…

2026/10/15 7:40:00 阅读更多 →
PowerShell运行OpenClaw中文乱码?从UTF-8编码到终端配置的完整修复方案

PowerShell运行OpenClaw中文乱码?从UTF-8编码到终端配置的完整修复方案

用 PowerShell 跑 OpenClaw 中文乱码?我踩完坑之后的完整解法你大概率是刚刚把 OpenClaw 部署好,兴冲冲地在 PowerShell 里启动它,结果满屏的中文变成了一堆“锟斤拷”或者“????”——先别急着怀疑是项目的问题,更别急着重装…

2026/10/15 7:40:00 阅读更多 →
基于集群划分的分布式光伏配电网电压协调控制与Matlab实现

基于集群划分的分布式光伏配电网电压协调控制与Matlab实现

分布式光伏一多起来,配电网最先暴露问题的往往是电压。光照一强、负荷又轻的时候,馈线末端电压能一路冲到1.06甚至1.07标幺值,逆变器要么降出力、要么直接脱网保护,好好的发电量白白丢了。传统的变电站有载调压和固定电容器组又反…

2026/10/15 7:39:00 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →