SharpCodePad 2.0.0.2

dotnet add package SharpCodePad --version 2.0.0.2
                    
NuGet\Install-Package SharpCodePad -Version 2.0.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SharpCodePad" Version="2.0.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SharpCodePad" Version="2.0.0.2" />
                    
Directory.Packages.props
<PackageReference Include="SharpCodePad" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SharpCodePad --version 2.0.0.2
                    
#r "nuget: SharpCodePad, 2.0.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SharpCodePad@2.0.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SharpCodePad&version=2.0.0.2
                    
Install as a Cake Addin
#tool nuget:?package=SharpCodePad&version=2.0.0.2
                    
Install as a Cake Tool

SharpCodePad 控件使用指南

简介

SharpCodePad 是一个基于 AvalonEdit 的高级代码编辑器控件,集成了代码编辑、语法高亮、编译运行、调试和项目管理等功能。该控件支持多种编程语言(C#、JavaScript、HTML、CSS、XML、MarkDown等),适用于需要内嵌代码编辑功能的 WPF 应用程序。

主要功能

1. 代码编辑功能

  • 语法高亮:支持多种编程语言的语法高亮显示(C#、JavaScript、HTML、CSS、XML、MarkDown等)
  • 代码折叠:可折叠/展开代码块,支持全部展开、全部折叠和重置折叠状态
  • 代码格式化:自动格式化 C# 代码,基于 Roslyn 编译器
  • 智能提示:基于 ICSharpCode.NRefactory 的代码智能补全功能
  • 签名帮助:提供方法重载和参数信息的实时提示
  • 悬停信息:鼠标悬停显示变量、方法、类型等的详细信息

2. 项目管理

  • 保存项目:保存当前代码和项目配置
  • 另存为项目:将项目保存为新文件
  • 导出代码:将代码导出为相应语言的文件
  • 导出 DLL:将代码编译并导出为 DLL 文件
  • 项目描述:支持添加和保存项目描述信息

3. 编译与运行

  • 编译代码:使用 Roslyn 编译器(Microsoft.CodeAnalysis.CSharp 4.14.0)编译 C# 代码
  • 运行代码:执行编译后的代码并显示输出结果
  • 错误提示:实时显示编译错误和警告信息,支持错误弹窗提示
  • 进度显示:编译过程中显示进度条和状态信息

4. 调试功能

  • 输出窗口:显示代码执行过程中的输出信息
  • 变量查看:查看运行时变量的值
  • VariableDisplayPlugin:高级变量显示插件,支持自定义变量展示方式
    • 自动检测并展示运行时变量
    • 支持自定义变量的展示格式和布局
    • 可根据变量类型智能选择合适的展示方式
    • 支持多种显示类型:Normal(普通文本)、Entity(对象属性)、Image(图像)等

5. 引用管理

  • 导入 DLL:导入外部 DLL 并添加相应的命名空间
  • 引用管理:管理项目引用的程序集
  • 命名空间选择器:可视化选择要导入的命名空间,避免不必要的命名空间导入
  • SDK 版本设置:支持设置目标 SDK 版本,默认为 Latest

控件结构

主要组件

  1. CodeEditor.xaml:控件的 UI 定义,包含菜单栏、代码编辑区和底部面板
  2. CodeEditor.xaml.cs:控件的代码后置文件,处理 UI 事件、初始化和高级功能(签名帮助、悬停信息)
  3. CodeEditorViewModel.cs:实现控件的业务逻辑和命令
  4. Extensions/AvalonExtensions:AvalonEdit 编辑器的扩展功能
  5. Core:核心功能实现,包括语言定义(EPLanguage)和项目模型(ProjectModel)
  6. ViewModel:包含 DebugVariableViewModel、OutputsViewModel 等视图模型
  7. Messenger:基于 WeakReferenceMessenger 的消息通信系统
  8. View:包含自定义视图控件,如 SignatureHelpControl、HoverInfoControl 等

界面布局

  • 顶部菜单栏:提供保存、导出等基本操作
  • 中间编辑区:基于 AvalonEdit 的代码编辑区
  • 底部面板:包含三个部分
    • Build:显示编译信息和错误提示
    • Output:显示程序输出
    • Vars:显示变量信息
  • 弹窗组件:包括签名帮助弹窗、悬停信息弹窗和错误提示弹窗

使用方法

在 WPF 应用中集成

  1. 添加引用:在项目中引用 SharpCodePad.dll 以及相关依赖

  2. 在 XAML 中添加命名空间

    xmlns:textEditor="clr-namespace:SharpCodePad"
    
  3. 添加 SharpCodePad 控件

    <textEditor:CodeEditor Width="1200" Height="750" />
    
  4. 配置扩展功能(可选):

    <textEditor:CodeEditor Width="1200" Height="750">
    
        <Setter Property="SignatureHelpProvider" Value="{StaticResource MySignatureHelpProvider}" />
    
        <Setter Property="HoverInfoProvider" Value="{StaticResource MyHoverInfoProvider}" />
    </textEditor:CodeEditor>
    

基本操作

创建和保存项目
  • 通过顶部菜单栏的 Save 选项保存项目
  • 项目文件扩展名为 .csp,包含代码、项目配置和描述信息
编辑代码
  • 在中间编辑区编写 C# 代码
  • 使用快捷键或右键菜单格式化代码
编译和运行
  • 通过右键菜单或命令编译和运行代码
  • 编译错误会显示在底部 Build 面板
  • 程序输出显示在 Output 面板
导入 DLL
  • 通过右键菜单的 Import DLL 选项导入外部 DLL
  • 选择要导入的命名空间
  • 导入的 DLL 将自动添加到项目引用
  • 支持拖放操作导入 DLL 文件
折叠代码
  • 使用编辑器左侧的折叠标记折叠/展开代码块
  • 或通过右键菜单的 ExpandAll、CollapseAll、ResetFolding 选项

命令列表

命令 功能
FormatCode 格式化当前代码
Expand 展开所有代码折叠
Collapse 折叠所有代码折叠
ResetFolding 重置代码折叠状态
CompileCode 编译当前代码,显示进度
RunCode 编译并运行代码
SaveProject 保存当前项目
SaveAsProject 另存为新项目
ImportDLL 导入外部 DLL
ExportDLL 导出代码为 DLL
ExportCode 导出代码为文件
Align 设置变量对齐方式
Ctrl+K 触发签名帮助(默认快捷键)

项目模型

SharpCodePad 使用 ProjectModel 类管理项目信息,包括:

  • 项目路径 (Path) 和代码文件路径 (CodeFilePath)
  • 项目描述 (Description)
  • 引用的程序集列表 (References)
  • 顶部命名空间 (TopUsings)
  • 语言设置 (Language),支持多种编程语言
  • SDK 版本 (SDKVersion)
  • 是否为顶级语句编码模式 (IsTopStatementCoding)

消息通信

控件使用 WeakReferenceMessenger 进行内部组件通信,主要消息类型:

  • GetCurrentCodePageIndex:获取当前代码页索引
  • UpdateFolding:更新代码折叠状态,支持多种编程语言
  • CoverCode:覆盖代码内容

注意事项

  1. 控件需要 .NET Framework 4.8 运行环境
  2. 编译功能依赖 Roslyn 编译器(Microsoft.CodeAnalysis.CSharp 4.14.0)
  3. 导入的 DLL 必须与项目目标框架兼容
  4. 运行代码需要正确设置入口点(Main 方法或顶级语句)
  5. 某些高级功能(如签名帮助、悬停信息)可以通过实现相应接口进行自定义扩展

依赖项

依赖项 版本 用途
AvalonEdit 6.3.1.120 代码编辑器核心
CommunityToolkit.Mvvm 8.4.0 MVVM 工具包
Microsoft.CodeAnalysis.CSharp 4.14.0 Roslyn 编译引擎
ICSharpCode.NRefactory 5.5.1 代码分析和补全
Newtonsoft.Json 13.0.3 JSON 序列化/反序列化
SharpBoxesCore 1.1.3.3 通用工具库
SharpBoxesCore.Wpf 1.2.2 WPF 扩展工具
SharpCodePad.CodeCompletion - 代码补全功能
SharpCodePad.Compile - 编译功能
SharpCodePad.VariableDisplayPluginCore - 变量显示插件系统

功能亮点

1. 插件化架构

SharpCodePad 采用高度模块化的插件化架构,特别是 VariableDisplayPlugin 插件系统,允许开发者自定义变量的展示逻辑和UI呈现方式。支持动态加载外部插件 DLL。

2. 智能代码分析

  • 基于 Roslyn 的实时代码分析和诊断
  • 基于 ICSharpCode.NRefactory 的代码补全和上下文建议
  • 智能检测变量并自动在调试窗口中展示
  • 提供签名帮助和悬停信息等高级功能

3. 灵活的UI布局

  • 可调整的面板分割和布局
  • 支持多种变量对齐方式(水平、垂直、网格布局)
  • 可自定义的编辑器选项和显示设置
  • 集成多种智能弹窗,提供上下文感知的用户界面

4. 文件拖放支持

通过拖放功能实现对代码文件和DLL文件的快速导入,提高开发效率。

5. 响应式设计

使用 CommunityToolkit.Mvvm 8.4.0 实现的响应式数据绑定,确保UI与数据模型的实时同步。

扩展开发

CodeEditor 提供了丰富的扩展点,允许开发者根据需求进行定制和扩展:

1. 编辑器扩展

  • 修改 AvalonExtensions 中的编辑器扩展,定制编辑体验
  • 实现自定义的文本高亮和格式化规则
  • 添加特定语言的语法支持,扩展 EPLanguage 枚举和 PLanguage 类

2. 插件开发

  • 扩展 VariableDisplayPluginCore 接口,实现自定义的变量展示逻辑
  • 开发新的插件组件,继承 DisplayControlBase 类
  • 实现插件间的通信和协作
  • 通过 ExternalPluginsLoader 加载外部插件

3. 命令系统扩展

  • 添加新的命令和功能到 ViewModel,使用 RelayCommand
  • 自定义键盘快捷键和命令绑定
  • 扩展现有的命令处理逻辑

4. 折叠策略定制

  • 实现自定义的折叠策略,支持特定语言
  • 通过 UpdateFolding 消息类型集成到折叠系统
  • 支持特定语言或框架的代码结构分析

5. 消息系统扩展

  • 利用现有的 WeakReferenceMessenger 消息通信系统,添加新的消息类型和处理逻辑
  • 实现组件间的松耦合通信
  • 扩展 Messenger 目录下的消息类,实现复杂的功能协调

6. 高级功能扩展

  • 实现自定义的 ISignatureHelpProvider 接口,提供特定语言的签名帮助
  • 实现自定义的 IHoverInfoProvider 接口,增强悬停信息功能
  • 扩展编译和调试功能,支持更多编程语言

以上是 CodeEditor 控件的基本功能和使用指南,详细的 API 文档请参考源代码注释。

Product Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0.2 184 12/4/2025
2.0.0.1 394 11/20/2025