title: Roslyn Stone emoji: 🪨 colorFrom: 灰色 colorTo: 蓝色 sdk: docker app_port: 7860 pinned: false tags:
注意:此项目是与GitHub Copilot合作构建的,拥抱未来的人工智能辅助开发。
一个面向开发人员和大型语言模型(LLM)友好的C#沙箱,通过模型上下文协议(MCP)创建单文件实用程序程序。以罗塞塔石碑——帮助解码古代语言的文物——为灵感命名,Roslyn-Stone帮助AI系统使用基于文件的应用程序(顶级语句)创建可运行的C#程序。
利用Roslyn编译器的强大功能构建完整的、可运行的.cs文件。执行C#代码,验证语法,加载NuGet包,并通过MCP查询文档,实现与Claude Code、VS Code和其他人工智能驱动开发工具的无缝集成。
非常适合创建命令行实用程序、数据处理脚本、自动化工具以及无需项目框架的快速C#程序。
最快的方式是使用预构建的Docker容器与您喜欢的MCP启用编辑器:
在您的MCP配置文件中添加以下内容:
Linux/macOS: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
{
"mcpServers": {
"roslyn-stone": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "DOTNET_USE_POLLING_FILE_WATCHER=1",
"ghcr.io/dylanlangston/roslyn-stone:latest"
]
}
}
}
**使用Podman?**只需将命令字段中的"docker"替换为"podman"。
在~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或等效位置添加以下内容:
{
"mcpServers": {
"roslyn-stone": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "DOTNET_USE_POLLING_FILE_WATCHER=1",
"ghcr.io/dylanlangston/roslyn-stone:latest"
]
}
}
}
就这样!容器提供了最小设置和增强安全性的隔离C#代码执行环境。
基于文件的C#应用程序 - 使用顶级语句创建单文件实用程序,符合.NET 10的dotnet run app.cs特性
内联包加载 - 使用nugetPackages参数在测试期间加载包,最终使用#:package指令创建自包含应用
通过Roslyn执行C# - 执行和测试C#代码,支持完整的.NET 10和递归NuGet依赖解析
迭代开发 - 增量构建程序,可选状态会话和上下文管理
实时错误反馈 - 获取详细的编译错误和警告,附带操作信息
资源与工具 - 正确的MCP分离:资源(数据)与工具(操作)
文档访问 - 通过doc://资源URI查询.NET类型/方法文档(包括核心SDK类型如System.String)
NuGet集成 - 通过nuget://资源搜索包,使用工具加载,解决完整的依赖树
MCP协议 - 官方ModelContextProtocol SDK,支持stdio和HTTP传输
双传输 - 支持stdio(本地)和HTTP(远程)MCP连接
AI友好 - 通过模型上下文协议设计用于LLM交互
优化提示 - 高效指导创建带有.NET 10指令示例的实用程序程序
容器化 - 支持Docker和.NET Aspire编排
OpenTelemetry - 内置可观测性,包括日志、指标和跟踪
Roslyn-Stone实现了模型上下文协议(MCP),帮助LLMs创建单文件C#实用程序程序。它遵循最佳实践,正确区分:
doc://)、NuGet包(nuget://)和执行状态(repl://)解决方案遵循干净架构原则和函数式编程模式。它实现了动态代码编译和执行的最佳实践,包括适当的AssemblyLoadContext使用以进行内存管理。
详见MCP_ARCHITECTURE.md的设计文档和DYNAMIC_COMPILATION_BEST_PRACTICES.md的编译细节。
RoslynStone/
├── src/
│ ├── RoslynStone.Api/ # 控制台主机与MCP服务器
│ ├── RoslynStone.Core/ # 域模型(ExecutionResult, PackageMetadata等)
│ ├── RoslynStone.Infrastructure/ # MCP工具、Roslyn服务、功能性助手
│ ├── RoslynStone.ServiceDefaults/# OpenTelemetry和Aspire默认设置
│ └── RoslynStone.AppHost/ # Aspire编排
└── tests/
├── RoslynStone.Tests/ # xUnit单元和集成测试
├── RoslynStone.Benchmarks/ # BenchmarkDotNet性能测试
└── RoslynStone.LoadTests/ # HTTP负载和并发测试
资源提供基于URI的被动数据源访问:
doc://{symbolName} - 查找.NET XML文档
doc://System.String,doc://System.Linq.Enumerable.Selectdoc://{packageId}@{symbolName}doc://Newtonsoft.Json@Newtonsoft.Json.JsonConvertnuget://search?q={query} - 搜索NuGet包
nuget://search?q=json&take=10nuget://packages/{id}/versions - 获取包版本列表
nuget://packages/Newtonsoft.Json/versionsnuget://packages/{id}/readme - 获取包README
nuget://packages/Newtonsoft.Json/readme?version=13.0.3repl://state - 通用REPL信息和能力repl://sessions - 列出活动的REPL会话repl://sessions/{contextId}/state - 会话特定元数据工具执行操作并可以修改状态。所有工具都支持可选的上下文管理:
执行工具:
contextId参数用于迭代开发contextId以维持会话连续性contextId用于上下文感知验证contextId以重置特定会话或所有会话contextId用于会话特定状态NuGet工具:
query,skip,take用于分页nuget://search资源packageIdnuget://packages/{id}/versions资源packageId,可选versionnuget://packages/{id}/readme资源文档工具:
symbolName,可选packageIddoc://资源注意:为了最大限度地兼容客户端,同时提供了资源和工具。资源适用于被动数据访问,而工具适用于所有MCP客户端。
Roslyn-Stone内置了提示,帮助LLMs创建单文件C#实用程序程序:
这些提示提供了创建可运行的.cs文件的详细指导,包括示例、常见模式和成功技巧。
一旦配置好,您的AI助手可以帮助您创建与.NET 10的基于文件的应用程序特性对齐的单文件C#实用程序程序:
构建一个简单的实用程序:
用户:"创建一个列出当前目录文件的实用程序"
助手:[调用EvaluateCsharp,使用完整的基于文件的应用程序代码]
→ 返回使用顶级语句的完整.cs文件
→ 可以直接运行:dotnet run utility.cs
创建带有包的自包含应用:
用户:"创建一个JSON格式化实用程序"
助手:
1. [搜索包:nuget://search?q=json]
2. [使用nugetPackages参数测试:EvaluateCsharp(..., nugetPackages: [{packageName: "Newtonsoft.Json", version: "13.0.3"}])]
3. [返回带有#:package指令的完整json-formatter.cs]
→ 完整的自包含应用:
#:package Newtonsoft.Json@13.0.3
using Newtonsoft.Json;
// ... 实用程序代码 ...
→ 运行:dotnet run json-formatter.cs(不需要.csproj!)
查询.NET类型的文档:
用户:"展示如何使用System.String.Split"
助手:[选项1:读取doc://System.String.Split资源]
[选项2:调用GetDocumentation("System.String.Split")]
→ 返回带有摘要、参数和示例的XML文档
执行前验证:
用户:"检查这段C#代码是否有效:<code>"
助手:[调用ValidateCsharp进行代码验证]
→ 返回详细的语法验证结果
具有上下文的迭代开发:
用户:"开始一个CSV处理器实用程序"
助手:[EvaluateCsharp,使用createContext=true,nugetPackages: CsvHelper]
→ 返回contextId以维持会话
用户:"添加按日期过滤"
助手:[EvaluateCsharp,使用contextId,添加过滤逻辑]
→ 在先前代码的基础上增量构建
AI助手使用.NET 10的现代语法创建完整的、可运行的单文件C#程序——无需类、Main方法或项目文件样板代码。
想要贡献代码、从源代码运行或了解更多内部细节?查看我们的全面入门指南,包括:
⚠️ 重要:这是一个代码执行服务。部署时应采取适当的安全措施:
欢迎贡献!请参阅我们的入门指南获取开发设置说明。随时提交问题和拉取请求。
详情见LICENSE文件。
为了获得最佳体验创建C#实用程序程序,我们推荐将Roslyn-Stone与Microsoft Learn MCP服务器(github.com/microsoftdocs/mcp)一起使用。
为什么搭配这些工具?
结合它们可以实现:
示例工作流程:
用户:"创建一个解析JSON文件的实用程序"
助手:
1. [microsoft-learn MCP:搜索JSON文档]
2. [microsoft-learn MCP:获取System.Text.Json代码示例]
3. [roslyn-stone:使用EvaluateCsharp测试代码]
4. [roslyn-stone:返回完整的json-parser.cs]
→ 结合两者的优势:官方文档+实时执行
设置两个服务器:
{
"mcpServers": {
"roslyn-stone": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/dylanlangston/roslyn-stone:latest"]
},
"microsoft-learn": {
"command": "npx",
"args": ["-y", "@microsoft/docs-mcp-server"]
}
}
}
这种组合提供了全面的.NET文档和实时C#执行,带来终极的实用程序程序开发体验。
dotnet run app.cs