# ClaudeCodeSDKNetFramework **Repository Path**: 3162289690/ClaudeCodeSDKNetFramework ## Basic Information - **Project Name**: ClaudeCodeSDKNetFramework - **Description**: A comprehensive .NET Framework 4 SDK for Claude Code API integration with CC Switch support - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-13 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Claude Code SDK for .NET Framework 4 一个完整的 .NET Framework 4 SDK,用于集成 Claude Code API,支持通过 CC Switch 和本地配置源进行配置管理。 ## 功能特性 - **完整的 .NET Framework 4 支持**:兼容传统的 .NET 应用程序 - **多种配置源**: - CC Switch 集成,用于集中配置管理 - 本地 JSON 文件配置 - App.config/Web.config 集成 - 环境变量支持 - **同步和异步 API**:完整的异步支持,实现非阻塞操作 - **对话历史**:在多个消息间保持上下文 - **错误处理**:全面的错误处理和日志记录 - **NuGet 包就绪**:易于分发和安装 ## 安装 ### NuGet 包 ```bash Install-Package ClaudeCodeSDK.NetFramework ``` ### 项目引用 在解决方案中添加对 `ClaudeCodeSDK` 项目的引用。 ## 快速开始 ### 基础用法 ```csharp using ClaudeCodeSDK.Client; using ClaudeCodeSDK.Configuration; // 创建配置 var config = new ClaudeCodeConfig { ApiEndpoint = "https://api.anthropic.com/v1", ApiKey = "your-api-key-here", TimeoutMs = 30000 }; // 创建客户端 using (var client = new ClaudeCodeClient(config)) { // 发送消息 var response = client.SendMessage("你好,Claude!"); if (response.HasError()) { Console.WriteLine($"错误: {response.Error.Message}"); } else { Console.WriteLine($"响应: {response.GetFirstTextContent()}"); } } ``` ### 使用 CC Switch 配置 ```csharp // 初始化 CC Switch 提供程序 var ccSwitchProvider = new CCSwitchConfigProvider("your-config-id"); var config = ccSwitchProvider.FetchConfiguration(); using (var client = new ClaudeCodeClient(config)) { var response = client.SendMessage("来自 CC Switch 的问候!"); Console.WriteLine(response.GetFirstTextContent()); } ``` ### 使用本地配置文件 ```csharp // 从 JSON 文件加载 var config = LocalConfigProvider.LoadFromFile("path/to/config.json"); using (var client = new ClaudeCodeClient(config)) { var response = client.SendMessage("来自配置文件的问候!"); Console.WriteLine(response.GetFirstTextContent()); } ``` ### 使用环境变量 ```csharp // 设置环境变量: // CLAUDE_CODE_API_KEY=your-api-key // CLAUDE_CODE_API_ENDPOINT=https://api.anthropic.com/v1 var config = LocalConfigProvider.LoadFromEnvironment(); using (var client = new ClaudeCodeClient(config)) { var response = client.SendMessage("来自环境变量的问候!"); Console.WriteLine(response.GetFirstTextContent()); } ``` ## 配置选项 | 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `ApiEndpoint` | string | 必需 | Claude API 端点 URL | | `ApiKey` | string | 必需 | 您的 Claude API 密钥 | | `TimeoutMs` | int | 30000 | 请求超时时间(毫秒)| | `EnableDebugLogging` | bool | false | 启用调试日志 | | `CustomHeaders` | Dictionary | 空 | 额外的 HTTP 头 | ## 高级用法 ### 带历史的对话 ```csharp var conversationHistory = new List(); using (var client = new ClaudeCodeClient(config)) { // 第一条消息 var response1 = client.SendMessage("你好,我正在学习人工智能。", conversationHistory); // 添加消息到历史记录 conversationHistory.Add(new ClaudeMessage { Role = "user", Content = new List { new ClaudeContent { Type = "text", Text = "你好,我正在学习人工智能。" } } }); conversationHistory.Add(new ClaudeMessage { Role = "assistant", Content = new List { new ClaudeContent { Type = "text", Text = response1.GetFirstTextContent() } } }); // 使用上下文进行后续提问 var response2 = client.SendMessage("我应该先学习什么?", conversationHistory); } ``` ### 自定义请求参数 ```csharp var request = new ClaudeRequest { Model = "claude-3-sonnet-20240229", MaxTokens = 2048, Temperature = 0.7, Messages = new List { new ClaudeMessage { Role = "user", Content = new List { new ClaudeContent { Type = "text", Text = "请详细解释神经网络。" } } } } }; var response = client.SendRequest(request); ``` ### 异步操作 ```csharp // 开始异步操作 var asyncResult = client.BeginSendMessage("你好,异步世界!", null, null); // 执行其他工作... // 结束异步操作 var response = client.EndSendMessage(asyncResult); Console.WriteLine(response.GetFirstTextContent()); ``` ## 错误处理 ```csharp try { var response = client.SendMessage("你好!"); if (response.HasError()) { Console.WriteLine($"API 错误: {response.Error.Type} - {response.Error.Message}"); } else { Console.WriteLine($"成功: {response.GetFirstTextContent()}"); } } catch (InvalidOperationException ex) { Console.WriteLine($"配置或网络错误: {ex.Message}"); } catch (ArgumentException ex) { Console.WriteLine($"无效参数: {ex.Message}"); } ``` ## 构建项目 1. 在 Visual Studio 中打开解决方案 2. 还原 NuGet 包 3. 构建解决方案 ## 创建 NuGet 包 ```bash cd src\ClaudeCodeSDK dotnet pack --configuration Release ``` NuGet 包将创建在 `bin\Release` 目录中。 ## 依赖项 - .NET Framework 4.0 - Newtonsoft.Json 13.0.3 ## 许可证 MIT 许可证 - 详见 LICENSE 文件。 ## 贡献 1. Fork 仓库 2. 创建功能分支 3. 进行修改 4. 添加测试 5. 提交拉取请求 ## 支持 如有问题和疑问,请在 GitHub 仓库中提交 issue。 ## 项目结构 ``` ClaudeCodeSDKNetFramework/ ├── src/ # 源代码 │ └── ClaudeCodeSDK/ # 主库 │ ├── Client/ # API 客户端 │ ├── Configuration/ # 配置管理 │ └── Models/ # 数据模型 ├── example/ # 示例项目 │ └── ClaudeCodeExample/ # 使用示例 ├── docs/ # 文档 │ ├── API-Reference.md # API 参考 │ └── Configuration-Guide.md # 配置指南 ├── README.md # 英文文档 ├── README.zh-CN.md # 中文文档 ├── QUICKSTART.md # 快速入门 ├── INSTALL.md # 安装指南 └── build.bat # 构建脚本 ``` ## 常见问题 ### Q: 如何获取 Claude API 密钥? A: 访问 Anthropic 官网注册账户并获取 API 密钥。 ### Q: 如何配置代理服务器? A: 可以通过 `CustomHeaders` 属性或系统环境变量配置代理。 ### Q: 支持 .NET Core 吗? A: 当前版本专为 .NET Framework 4 设计,未来可能支持 .NET Core。 ### Q: 如何处理超时问题? A: 可以通过 `TimeoutMs` 属性调整超时时间,默认 30 秒。 ## 最佳实践 1. **安全存储 API 密钥**:使用环境变量或 CC Switch 存储敏感信息 2. **错误处理**:始终检查响应是否有错误 3. **资源管理**:使用 `using` 语句确保客户端正确释放 4. **配置验证**:在使用前验证配置的有效性 5. **异步操作**:在 UI 应用程序中使用异步方法避免阻塞 ## 版本历史 ### v1.0.0 (2024-05-13) - 初始版本发布 - 完整的 Claude API 集成 - 多配置源支持 - 同步和异步 API - 完整的文档和示例 ## 联系方式 - 项目地址:https://github.com/yourusername/claude-code-sdk-netframework - 问题反馈:提交 GitHub Issue - 邮件联系:your-email@example.com --- **注意**:请确保在使用前已正确配置 API 密钥,并遵守 Anthropic 的使用条款。