内容
<div align="center">
# ProjGraph
**.NET 项目依赖、数据库模式和类层次可视化工具生态。**
[](https://github.com/HandyS11/ProjGraph/actions/workflows/ci.yml)
[](https://github.com/HandyS11/ProjGraph/actions/workflows/publish.yml)
[](./LICENSE)
[](https://www.nuget.org/packages/ProjGraph.Cli)
[](https://www.nuget.org/packages/ProjGraph.Cli)
[](https://www.nuget.org/packages/ProjGraph.Mcp)
[](https://www.nuget.org/packages/ProjGraph.Mcp)
</div>
**ProjGraph** 是一个 .NET 工具生态系统,用于可视化项目依赖、数据库模式和类层次。它提供了一个用于手动分析的 CLI 和一个用于 AI 辅助代码架构探索的 MCP 服务器。
## 🚀 快速开始
### CLI 工具
安装并使用命令行工具进行即时可视化:
```bash
# 安装
dotnet tool install -g ProjGraph.Cli
# 可视化项目依赖
projgraph visualize ./MySolution.slnx
# 生成实体关系图(从 DbContext 或 ModelSnapshot)
projgraph erd ./Data/MyDbContext.cs
# 为类及其层次生成类图
projgraph classdiagram ./Models/User.cs
# 计算关键解决方案指标(项目数量、深度、热点)
projgraph stats ./MySolution.slnx
```
📖 [完整 CLI 文档](./src/ProjGraph.Cli/README.md)
### MCP 服务器
使用以下设置配置您的 MCP 客户端(例如 GitHub Copilot、Claude):
> 在 [NuGet](https://www.nuget.org/packages/ProjGraph.Mcp) 上查找最新版本号
```json
{
"servers": {
"ProjGraph.Mcp": {
"type": "stdio",
"command": "dnx",
"args": ["ProjGraph.Mcp@x.x.x", "--yes"]
}
}
}
```
📖 [完整 MCP 文档](./src/ProjGraph.Mcp/README.md)
## ✨ 主要功能
- **📊 多种输出格式**:ASCII 树和 Mermaid.js 图表
- **🗄️ 实体关系图**:从 EF Core `DbContext` 或 `ModelSnapshot` 文件生成 ERD
- **🏗️ 类层次**:可视化具有继承和依赖关系的类图
- **📈 解决方案指标**:项目数量、类型分解、依赖深度和热点检测
- **📁 现代 .NET 支持**:完全支持 `.slnx`、`.sln` 和 `.csproj` 文件
- **🤖 AI 集成**:用于 GitHub Copilot、Claude 和其他 AI 助手的 MCP 服务器
- **⚡ 快速可靠**:高效的解析和图算法
## 🛠️ 开发
### 先决条件
- [.NET 10.0 SDK](https://dotnet.microsoft.com/download) 或更高版本
### 在本地运行
```bash
# CLI
dotnet run --project src/ProjGraph.Cli -- visualize ./ProjGraph.slnx
# 统计信息
dotnet run --project src/ProjGraph.Cli -- stats ./ProjGraph.slnx
# MCP 服务器
dotnet run --project src/ProjGraph.Mcp
```
## 📝 使用示例
### 分析项目依赖
```bash
# 树形格式(默认)
projgraph visualize ./MySolution.sln
# 用于文档的 Mermaid 格式
projgraph visualize ./MySolution.slnx --format mermaid --output docs/dependencies.mmd
```
### 生成数据库图表
```bash
# 从 DbContext 生成 ERD
projgraph erd ./Data/MyDbContext.cs
# 从 ModelSnapshot 生成 ERD(利用迁移)
projgraph erd ./Migrations/MyDbContextModelSnapshot.cs
# 输出到 Markdown 以进行文档记录
projgraph erd ./Data/MyDbContext.cs --output docs/database-schema.md
# 控制 EF Core 拥有类型(OwnsOne/OwnsMany)的渲染方式:
# 'mirror'(默认)将表分割的拥有类型内联到其所有者中,如 EF 所命名的;
# 'classic' 为每个拥有类型提供其自己的实体框,而不管表映射如何
projgraph erd ./Data/MyDbContext.cs --owned-mode classic
```
### 可视化类层次
```bash
# 为类及其继承和依赖项生成图表
projgraph classdiagram ./Models/Admin.cs -i -d
# 控制发现深度(默认:1)
projgraph classdiagram ./Models/Admin.cs -i -d --depth 5
```
### 分析解决方案指标
```bash
# 显示项目数量、深度统计和热点项目
projgraph stats ./MySolution.slnx
# 显示引用最多的前 10 个项目
projgraph stats ./MySolution.slnx --top 10
```
### 与 AI 助手配合使用
配置 MCP 服务器后:
```text
您: “分析我的解决方案中的依赖关系”
AI: [生成架构图]
您: “为 User 类生成类图”
AI: [生成类层次]
您: “显示我的 DbContext 中的实体关系”
AI: [生成数据库模式]
您: “给我一个解决方案的健康总结”
AI: [返回项目数量、深度统计和热点项目]
```
## 🔗 链接
- **CLI 包**: [ProjGraph.Cli on NuGet](https://www.nuget.org/packages/ProjGraph.Cli)
- **MCP 包**: [ProjGraph.Mcp on NuGet](https://www.nuget.org/packages/ProjGraph.Mcp)
## 📚 示例和展示
在 [示例展示](./samples/README.md) 中探索 ProjGraph 功能的实时示例。 可用的示例包括:
- **电子商务 ERD**:具有继承和层次的复杂数据库模型。
- **设计模式**:显示模式实现的深度类图。
- **模块化架构**:用于现代解决方案的项目依赖关系可视化。
- **简单层次**:为新用户提供易于入门的示例。
- **解决方案指标**:具有项目数量、深度和热点的架构健康摘要。
## 📚 文档
- [架构概述](./ARCHITECTURE.md) - 解决方案结构和设计决策
- [贡献指南](./CONTRIBUTING.md) - 如何为项目做出贡献
- [安全策略](./SECURITY.md) - 安全报告指南