# C# 语言规范（企业版插件上下文）

> 本目录来自 **dotnet/skills**（语言/测试/迁移技能），**不是** BOS 插件手册。  
> 写企业版插件时：主读 skill 本体 + `assets/*`；下面「可选用」才读本目录。

## 写 BOS 插件时

| 要用 | 不要用 |
|------|--------|
| skill `kd-enterprise-csharp` + assets 模板 | 把本目录当插件实现手册 |
| `.NET Framework 4.x` + `Kingdee.BOS.*` | ASP.NET Core / 通用 Host 样板 |
| 平台日志与异常约定 | `Console.WriteLine` 当业务日志 |
| 项目内 msbuild/已有 csproj | [csharp-scripts.md](csharp-scripts.md) 文件型 `dotnet run app.cs`（.NET 10 实验脚本） |

## 本目录文件用途

| 文件 | 用途 | 插件风险 |
|------|------|----------|
| [nullable-references.md](nullable-references.md) | NRT 注解迁移 | 低：可用；勿借机改业务行为 |
| [thread-abort.md](thread-abort.md) | `Thread.Abort`→协作取消 | **中**：目标是 .NET 6+；BOS 常仍在 **.NET Framework 4.x**，勿为「现代化」强行改插件线程模型 |
| [csharp-scripts.md](csharp-scripts.md) | 无 csproj 的 .NET 10 文件脚本 | **高误用**：与 BOS 插件无关，**默认不要读** |
| [mstest.md](mstest.md) 等 test-* | 通用测试质量 | 仅当项目真有对应测试栈时用；勿引入非项目测试框架 |
| [refs/](refs/) | 多语言测试扩展（含 Python/JS…） | 噪音大；插件任务忽略 |

## 已从「推荐阅读」排除的冲突源

- `csharp-scripts` 中大量 `Console.WriteLine`、top-level statements、`#:ref` 包引用 → **不生成进插件**
- 多语言 test skills 里的 pytest/Jest 示例 → **与 BOS C# 插件无关**
- 向 .NET 6+ 整体迁移的默认假设 → **以当前 BOS 目标框架为准**

## 平台硬约束（摘要）

见 skill：仅 `Kingdee.BOS.*`；禁 `kd.bos`；禁循环查库/拼 SQL；按插件类型使用/不使用 `this.View`。
