统一各项目运行时目录结构

D:\XPData
├── DataBase\          # SQLite 数据库,例如 XP.db
├── DetectorImages\    # 探测器采集图像
├── Logs\              # Serilog 运行日志
├── Dump\              # 异常 Dump 文件
├── Report\            # 报告输出目录
├── Plan\              # 工艺 / CNC / 检测程序数据
├── Tools\             # 工具相关数据
└── Data\              # 其他运行数据
This commit is contained in:
zhengxuan.zhang
2026-06-05 14:03:30 +08:00
parent a5397ba752
commit b673eeb40a
8 changed files with 102 additions and 30 deletions
+75 -10
View File
@@ -17,17 +17,65 @@ XplorePlane 系统用于控制平面 CT 设备的各个子系统(射线源、
```
XplorePlane.sln
├── XplorePlane/ # 主应用程序(WPF)
├── XP.Camera/ # 相机控制库(Basler
├── ImageProcessing/ # 独立图像处理应用
├── ImageProcessing.Core/ # 图像处理算子基类
├── ImageProcessing.Processors/ # 具体算子实现
├── ImageProcessing.Controls/ # 图像显示控件(ImageCanvasControl
├── ImageROIControl/ # ROI 绘制控件
├── XplorePlane.Tests/ # 单元测试
── ExternalLibraries/ # 外部 DLL 和 ONNX 模型
├── XplorePlane/ # 主应用程序(WPF + Prism
├── XP.Common/ # 公共基础库:日志、数据库、Dump、通用控件等
├── XP.Camera/ # 相机控制库(Basler / Hikvision 等)
├── XP.Hardware.Detector/ # 探测器硬件抽象与实现
├── XP.Hardware.MotionControl/ # 运动控制模块
├── XP.Hardware.PLC/ # PLC 通信模块
├── XP.Hardware.PLC.Sentry/ # PLC 信号监控 / Sentry 工具
├── XP.Hardware.RaySource/ # 射线源控制模块
── XP.Hardware.RaySource.Comet.Host/ # Comet 射线源独立 Host 进程
├── XP.Hardware.RaySource.Comet.Messages/# Comet Host 通信消息定义
├── XP.ImageProcessing.Core/ # 图像处理算子基类与核心模型
├── XP.ImageProcessing.Processors/ # 具体图像处理算子实现
├── XP.ImageProcessing.CfgControl/ # 图像处理配置控件
├── XP.ImageProcessing.RoiControl/ # ROI 绘制与测量控件
├── XP.Scan/ # 扫描模式相关模块
├── XP.Calibration/ # 校准模块
├── XP.ReportEngine/ # 报告生成模块
├── XP.ImageProcessing.SmokeTest/ # 图像处理冒烟测试程序
├── XplorePlane.Tests/ # 单元测试项目(不一定参与当前 sln 构建)
├── ExternalLibraries/ # 外部 DLL、模板、模型等运行依赖
├── ReleaseFiles/ # 已整理的发布文件快照
└── bin/ # 当前主程序构建输出目录(由 XplorePlane.csproj 配置)
```
> 当前主程序 [XplorePlane/XplorePlane.csproj](XplorePlane/XplorePlane.csproj) 通过 `BaseOutputPath=..\bin\` 将输出放在解决方案根目录的 `bin/` 下,而不是 `XplorePlane/bin/` 下。`XP.App/` 是旧输出路径,不再作为当前主程序输出目录使用。
### 运行时目录与数据存储
运行时产生的数据统一放在源码仓库外的 `D:\XPData`,避免数据库、日志、采集图像、Dump 和报告污染 `D:\XplorePlane` 源码目录。
默认配置见 [XplorePlane/App.config](XplorePlane/App.config)
```xml
<add key="XpData:RootPath" value="D:\XPData" />
<add key="Serilog:LogPath" value="D:\XPData\Logs" />
<add key="Sqlite:DbFilePath" value="D:\XPData\DataBase\XP.db" />
<add key="Detector:SavePath" value="D:\XPData\DetectorImages" />
<add key="Dump:StoragePath" value="D:\XPData\Dump" />
<add key="Report:OutputDirectory" value="D:\XPData\Report" />
```
推荐目录结构:
```
D:\XPData
├── DataBase\ # SQLite 数据库,例如 XP.db
├── DetectorImages\ # 探测器采集图像
├── Logs\ # Serilog 运行日志
├── Dump\ # 异常 Dump 文件
├── Report\ # 报告输出目录
├── Plan\ # 工艺 / CNC / 检测程序数据
├── Tools\ # 工具相关数据
└── Data\ # 其他运行数据
```
`XplorePlane.Services.Storage.XpDataPathService` 会确保上述受管目录存在。发布目录 [ReleaseFiles/](ReleaseFiles/) 中的 `App.config``XplorePlane.dll.config` 也应保持同样的运行时路径。
源码目录下旧的运行数据目录(如 `DataBase/XP.db``DetectorImages/``Dump/``Report/``Logs/`)不应提交到 Git,已在 [.gitignore](.gitignore) 中忽略。
### XplorePlane 主项目结构
```
@@ -86,7 +134,7 @@ XplorePlane/
- NavigationPropertyPanelViewModel(单例,相机预览共享实例)
- 各 Service 和 ViewModel(按需注册)
### 构建
### 构建与输出
```bash
# Debug
@@ -94,8 +142,25 @@ dotnet build XplorePlane.sln -c Debug
# Release
dotnet build XplorePlane.sln -c Release
# 只构建主程序
dotnet build XplorePlane/XplorePlane.csproj -c Release
```
当前主程序输出目录由 [XplorePlane/XplorePlane.csproj](XplorePlane/XplorePlane.csproj) 配置为:
```text
D:\XplorePlane\bin\<Configuration>\net8.0-windows\win-x64\
```
Comet Host 编译后会复制到当前主程序输出目录的 `Host/` 子目录:
```text
D:\XplorePlane\bin\<Configuration>\net8.0-windows\win-x64\Host\
```
[ReleaseFiles/](ReleaseFiles/) 是发布文件快照,不是普通编译输出目录;清理或更新运行依赖时需要同步检查该目录。
### TO-DO List
- [x] 软件基于 WPF + Prism 基础的框架