Skip to content

refactor: 项目 C# 化#2511

Merged
SALTWOOD merged 2 commits into
devfrom
dev
Apr 29, 2026
Merged

refactor: 项目 C# 化#2511
SALTWOOD merged 2 commits into
devfrom
dev

Conversation

@SALTWOOD
Copy link
Copy Markdown
Member

@SALTWOOD SALTWOOD commented Feb 26, 2026

此计划旨在将整个 PCL-CE 残存的 VB.NET 代码完全迁移至 C#。
目前完成的部分:

  • 修复所有构建时错误
  • 修复 CI
  • 使核心功能(启动、下载)基本可用
  • 重构 ModValidate
  • 移除所有 dynamic 转型
  • 优化代码风格,使用现代 C# 语法
  • 部分重构代码

项目发起者:@SALTWOOD
主要开发者:

基于目前项目已经部分可用的事实,以 Draft 状态开启此 PR。


自 C#E 创建后主线合并的 PR 以下是自 C#E 创建后主线合并的 PR。这些 PR 需要在 C#E 实现。

@SALTWOOD SALTWOOD requested review from a team February 26, 2026 05:02
@pcl-ce-automation pcl-ce-automation Bot added 🚧 正在处理 开发人员正在对该内容进行开发、测试或修复,进展中 size: XXL PR 大小评估:巨型 labels Feb 26, 2026
@SALTWOOD SALTWOOD added the ⚠️ 破坏性 涉及对启动器核心功能有潜在破坏风险的更改,需特别谨慎评估和测试 label Feb 26, 2026
@EncVar EncVar requested review from a team and Copilot and removed request for a team February 26, 2026 05:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

将 PCL-CE 项目中残留的 VB.NET 代码迁移/重写为 C#,并同步修复构建与 CI,使核心 UI 控件与基础功能可用。

Changes:

  • 新增/迁移大量 WPF 控件与基础设施类到 C#(按钮、输入框、滚动、弹窗、图片加载等)。
  • 调整 XAML x:Class 命名空间为 PCL.*,配套新增/迁移对应的 code-behind。
  • 更新解决方案与 CI 构建目标,从 .vbproj 切换到 .csproj

Reviewed changes

Copilot reviewed 70 out of 248 changed files in this pull request and generated 20 comments.

Show a summary per file
File Description
Plain Craft Launcher 2/Modules/Base/MyBitmap.cs 新增图片类型转换与加载工具(含缓存、裁剪/旋转/保存)。
Plain Craft Launcher 2/Controls/MyVirtualizingElement.cs 新增延迟实例化容器控件,用于虚拟化/懒加载场景。
Plain Craft Launcher 2/Controls/MyTextButton.cs 新增文本按钮控件与颜色/文本动画逻辑。
Plain Craft Launcher 2/Controls/MyTextBox.cs 新增带提示与校验动画的输入控件。
Plain Craft Launcher 2/Controls/MySlider.xaml.cs 新增滑动条控件交互与动画逻辑。
Plain Craft Launcher 2/Controls/MySlider.xaml 更新滑动条 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MySearchBox.xaml.cs 新增搜索框控件逻辑(清空/搜索事件)。
Plain Craft Launcher 2/Controls/MySearchBox.xaml 更新搜索框 XAML x:Class,补充事件绑定。
Plain Craft Launcher 2/Controls/MyScrollViewer.cs 新增自定义滚动视图(滚轮动画、Tooltip 隐藏等)。
Plain Craft Launcher 2/Controls/MyScrollBar.cs 新增自定义滚动条颜色/透明度动画。
Plain Craft Launcher 2/Controls/MyResizer.cs 新增窗口边缘拖拽缩放逻辑(Win32 Hook)。
Plain Craft Launcher 2/Controls/MyRadioButton.xaml.cs 新增单选按钮控件(图标+文本)与动画。
Plain Craft Launcher 2/Controls/MyRadioButton.xaml 更新单选按钮 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyRadioBox.xaml.cs 新增单选框控件与动画/互斥逻辑。
Plain Craft Launcher 2/Controls/MyRadioBox.xaml 更新单选框 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyPageLeft.cs 新增侧边页容器进入/退出动画与控件遍历。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgText.xaml.cs 新增文本弹窗逻辑与按钮处理。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgText.xaml 更新弹窗 XAML x:Class,补充 Click 事件绑定。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgSelect.xaml.cs 新增选择弹窗逻辑(IMyRadio 接入)。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgSelect.xaml 更新选择弹窗 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgMarkdown.xaml.cs 新增 Markdown 弹窗逻辑。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgMarkdown.xaml 更新 Markdown 弹窗 XAML x:Class 并绑定 Click。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgInput.xaml.cs 新增输入弹窗逻辑(校验与按钮状态)。
Plain Craft Launcher 2/Controls/MyMsg/MyMsgInput.xaml 更新输入弹窗 XAML x:Class 并绑定 Click。
Plain Craft Launcher 2/Controls/MyMenuItem.cs 新增自定义 MenuItem 颜色动画与透明度设置。
Plain Craft Launcher 2/Controls/MyLoading.xaml.cs 新增加载控件状态机与动画循环。
Plain Craft Launcher 2/Controls/MyLoading.xaml 更新加载控件 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyListItem.xaml 更新 ListItem XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyImage.cs 新增图片控件:支持本地/网络加载与缓存。
Plain Craft Launcher 2/Controls/MyIconTextButton.xaml.cs 新增图标+文本按钮控件与动画。
Plain Craft Launcher 2/Controls/MyIconTextButton.xaml 更新控件 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyIconButton.xaml.cs 新增图标按钮控件与动画,并扩展 AniDispose。
Plain Craft Launcher 2/Controls/MyIconButton.xaml 更新控件 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyHint.xaml 更新提示控件 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyExtraTextButton.xaml.cs 新增附加文本按钮控件与显示/动画逻辑。
Plain Craft Launcher 2/Controls/MyExtraTextButton.xaml 更新控件 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MyExtraButton.xaml.cs 新增附加按钮控件(进度、左右键、动画)。
Plain Craft Launcher 2/Controls/MyExtraButton.xaml 更新控件 XAML x:Class 并补充鼠标事件绑定。
Plain Craft Launcher 2/Controls/MyComboBoxItem.cs 新增自定义下拉项控件与动画。
Plain Craft Launcher 2/Controls/MyComboBox.cs 新增自定义 ComboBox(可编辑提示、动画、宽度同步)。
Plain Craft Launcher 2/Controls/MyCheckBox.xaml 更新复选框 XAML x:Class 并格式化/修正修饰符大小写。
Plain Craft Launcher 2/Controls/MyButton.xaml.cs 新增按钮控件与动画/事件。
Plain Craft Launcher 2/Controls/MyButton.xaml 更新按钮 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MinecraftServerQuery.xaml.cs 新增服务器查询面板逻辑。
Plain Craft Launcher 2/Controls/MinecraftServerQuery.xaml 更新查询面板 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/MinecraftServer.xaml.cs 新增服务器信息展示与异步 Ping 更新逻辑。
Plain Craft Launcher 2/Controls/MinecraftServer.xaml 更新服务器展示 XAML x:Class 并格式化。
Plain Craft Launcher 2/Controls/IMyRadio.cs 新增单选类控件统一接口。
Plain Craft Launcher 2/Controls/FontSelector.xaml.cs 新增字体选择器逻辑(异步加载系统字体)。
Plain Craft Launcher 2/Controls/FontSelector.xaml 更新字体选择器 XAML x:Class
Plain Craft Launcher 2/Controls/Behaviors/LazyLoadBehavior.cs 新增懒加载 Behavior 与扩展方法。
Plain Craft Launcher 2/Controls/Behaviors/ClipboardInterceptor.cs 新增安全剪贴板拦截(附带授权说明)。
Plain Craft Launcher 2/Controls/AnimatedBackgroundGrid.cs 新增可动画切换背景色的 Grid。
Plain Craft Launcher 2/Application.xaml.cs 新增/迁移 WPF Application 启动与全局处理逻辑。
Plain Craft Launcher 2.slnx 切换解决方案项目引用到 C# 项目文件。
PCL.Core/App/Basics.cs 新增 OpenUri 工具方法。
.github/workflows/reusable-build.yml CI 构建目标切换到 .csproj

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Plain Craft Launcher 2/Modules/Base/MyBitmap.cs
Comment thread Plain Craft Launcher 2/Modules/Base/MyBitmap.cs
Comment thread Plain Craft Launcher 2/Modules/Base/MyBitmap.cs
Comment thread Plain Craft Launcher 2/Modules/Base/MyBitmap.cs
Comment thread Plain Craft Launcher 2/Modules/Base/MyBitmap.cs
Comment thread Plain Craft Launcher 2/Controls/MyResizer.cs
Comment thread Plain Craft Launcher 2/Controls/MyResizer.cs
Comment thread Plain Craft Launcher 2/Controls/MyResizer.cs
Comment thread Plain Craft Launcher 2/Controls/MyResizer.cs
Comment thread Plain Craft Launcher 2/Controls/MyResizer.cs
@pcl-ce-automation pcl-ce-automation Bot removed the ⚠️ 破坏性 涉及对启动器核心功能有潜在破坏风险的更改,需特别谨慎评估和测试 label Feb 26, 2026
@MoYuan-CN MoYuan-CN added the ⚠️ 破坏性 涉及对启动器核心功能有潜在破坏风险的更改,需特别谨慎评估和测试 label Feb 26, 2026
@pcl-ce-automation pcl-ce-automation Bot removed the ⚠️ 破坏性 涉及对启动器核心功能有潜在破坏风险的更改,需特别谨慎评估和测试 label Feb 26, 2026
@wtommy932
Copy link
Copy Markdown
Contributor

wtommy932 commented Feb 28, 2026

VB的是否nullable是模棱两可的,转到C#有些就乱了
就会导致亿点点和null有关的Warning
我觉得这是一个大问题

亿点点Warning之一 d3da8c5ba0a4f8ece4fc654be3d75093 263e110f757ce0325d147f6e136d016d

@lhx077
Copy link
Copy Markdown
Member

lhx077 commented Feb 28, 2026

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 83cfcff7c3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Plain Craft Launcher 2/FormMain.xaml.cs
@LuLu-ling

This comment was marked as outdated.

@SALTWOOD
Copy link
Copy Markdown
Member Author

SALTWOOD commented Apr 8, 2026

所有来自 VB 上游的 PR 已经同步。

@SALTWOOD SALTWOOD marked this pull request as ready for review April 10, 2026 12:05
@pcl-ce-automation pcl-ce-automation Bot added 🛠️ 等待审查 Pull Request 已完善,等待维护者或负责人进行代码审查 and removed 🚧 正在处理 开发人员正在对该内容进行开发、测试或修复,进展中 labels Apr 10, 2026
sourcery-ai[bot]

This comment was marked as low quality.

@SALTWOOD SALTWOOD requested review from a team and removed request for a team April 10, 2026 16:51
@pcl-ce-automation pcl-ce-automation Bot added the size: XS PR 大小评估:微型 label Apr 13, 2026
@SALTWOOD SALTWOOD reopened this Apr 13, 2026
@pcl-ce-automation pcl-ce-automation Bot added size: XXL PR 大小评估:巨型 and removed size: XS PR 大小评估:微型 labels Apr 13, 2026
LuLu-ling
LuLu-ling previously approved these changes Apr 29, 2026
Copy link
Copy Markdown
Member

@LuLu-ling LuLu-ling left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不要肘我😭😭😭Orz

@LuLu-ling LuLu-ling requested review from a team April 29, 2026 12:43
AresConnor
AresConnor previously approved these changes Apr 29, 2026
Copy link
Copy Markdown

@AresConnor AresConnor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QWQ

@LuLu-ling LuLu-ling dismissed stale reviews from AresConnor and themself April 29, 2026 14:40

The merge-base changed after approval.

LuLu-ling
LuLu-ling previously approved these changes Apr 29, 2026
@LuLu-ling LuLu-ling requested a review from AresConnor April 29, 2026 14:43
SALTWOOD added a commit to PCL-Community/PCL-CSharpE that referenced this pull request Apr 29, 2026
@LuLu-ling LuLu-ling requested review from a team April 29, 2026 14:43
@pcl-ce-automation pcl-ce-automation Bot added 🕑 等待合并 已处理完毕,正在等待代码合并入主分支 and removed 🛠️ 等待审查 Pull Request 已完善,等待维护者或负责人进行代码审查 labels Apr 29, 2026
@SALTWOOD SALTWOOD merged commit c241fdd into PCL-Community:dev Apr 29, 2026
2 checks passed
@pcl-ce-automation pcl-ce-automation Bot added 👌 完成 相关问题已修复或功能已实现,计划在下次版本更新时正式上线 and removed 🕑 等待合并 已处理完毕,正在等待代码合并入主分支 labels Apr 29, 2026
LuLu-ling pushed a commit that referenced this pull request May 1, 2026
Pigeon0v0 pushed a commit that referenced this pull request May 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size: XXL PR 大小评估:巨型 👌 完成 相关问题已修复或功能已实现,计划在下次版本更新时正式上线

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants