首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >X# 项目近期更新综合报告

X# 项目近期更新综合报告

作者头像
firstxinjie
发布2026-05-21 21:07:49
发布2026-05-21 21:07:49
790
举报

近期,X# 项目在 Visual Studio 集成现代化、Visual FoxPro 兼容性、运行时稳定性和项目系统方面进行了密集迭代。以下按功能领域汇总关键变更。

1. Visual Studio 集成与开发体验

属性页重构

  • 全部 SDK 风格项目的属性页(常规、生成、调试、语言、方言、全局 Using、生成事件、包)已从 WinForms 迁移至 WPF + MVVM 架构。
  • 完美适配 Visual Studio 深色/浅色主题,每个设置均提供“重置为默认值”按钮,并内置配置选择器。
  • 修复了属性保存、回读及“幻影”值问题,变更可立即传播。

新工具窗口与导航

  • 文档大纲窗口:基于 WPF 实现,以树形结构展示文件成员,可从 ‎视图 > 其他窗口 打开,自动跟随光标。
  • “转到定义”结果窗口:当符号有多处定义时,以浮动窗口列出所有结果,方便导航。
  • 导航栏与光标跟踪修复,本地函数也能正确更新。

UI 与图标现代化

  • 图标全部替换为 ImageMonikers / CrispImage,在完成列表、下拉栏中呈现高清晰、与 VS 一致的视觉效果。
  • 注释命令增强:切换注释时将第一行状态应用到所有行;禁止对 ‎TEXT..ENDTEXT 块内部进行格式化以保留布局。
  • 启用 SDK 项目的 “发布”和“打包” 菜单项,支持从 IDE 直接创建部署包或 NuGet 包。

项目系统改进

  • 完善 SDK 风格项目的 “从项目中排除/包含” 功能,精细控制构建文件。
  • 抑制不必要的 MSBuild 调用,显著加快大型解决方案加载速度
  • 防止项目项重复添加,修复项目依赖项对 ‎PackageReferences 的错误响应。
  • 实现经典项目到 SDK 项目的 自动转换工具 (‎XSConvert2SDK),并创建专用 ‎SdkProjectNode 类。
  • 修复 SDK 项目引用在“添加引用”对话框中不出现的问题。

稳定性与线程

  • 日志记录和事件处理重构至独立的 Support DLL,确保辅助代码尽早加载,解决加载顺序问题。
  • 修复构建过程中添加引用导致的 Visual Studio 死锁。
  • 解决项目文件编辑命令的线程问题,保证 UI 更新安全。

2. Visual FoxPro 兼容性全面提升

架构重构

  • 实现 无头运行时与 UI 提供程序模式,将 VFP 运行时与 WinForms 解耦,支持非交互式/跨平台场景。
  • 新增 ‎VfpUIService 和 ‎VfpUIProvider,通过 ‎AssemblyHelper 动态加载 GUI 提供程序。

新函数与命令

  • 新增函数:‎NORMALIZE()、‎DISPLAYPATH()、‎AUSED()、‎COMPOBJ()、‎LINENO()、‎LoadPicture()、‎ISMEMOFETCHED()、‎ISEXCLUSIVE()、‎ISREADONLY()、‎TXNLEVEL()、‎PROW()、‎PCOL() 等。
  • UI 对话框:完整实现 ‎GETDIR()、‎GETFILE()、‎GETPICT(),并修复 ‎MESSAGEBOX() 的超时与动态参数问题。
  • 命令支持:实现 ‎SET POINT、‎SET SEPARATOR、‎SET MEMOWIDTH、‎SYSMETRIC、‎COPY TO ARRAY、‎SET DEVICE TO FILE,并修正 ‎SET DEFAULT TO 的路径处理。
  • DIR/‎DIRECTORY 命令:重新实现,输出与原生 VFP 一致,管理只读访问。

数组与参数处理

  • 为 ‎ADIR()、‎APRINTERS()、‎AMEMBERS()、‎AUSED() 等实现 自动数组创建,无需预声明。
  • 引入 ‎FoxArrayInputParameter 特性并在编译器中正确解析,支持 ‎__ScatterArray() 等函数接收未声明数组。
  • 重构 ‎ACopy 内部实现,提高可靠性。

关键修复

  • VARTYPE() 对未声明变量正确返回 ‎'U' 而非抛出异常。
  • FSize() 支持 filename 参数,并修复 ‎Set.Compatible 类型存储错误。
  • FTime() 分钟部分错误修正;‎ROW()、‎COL()、‎RGB() 修复。
  • BINTOC() / ‎CTOBIN()、‎FCHSIZE 完全兼容 VFP。
  • RELEASE ALL LIKE 正确处理带引号通配符。
  • DbCopyToArray 部分字段复制时的越界错误已修复。

VFPXPorter 重大重构

  • 菜单生成引擎彻底重写:导出代码改为 ‎INHERIT XSharp.VFP.UI.Menu,完整支持嵌套子菜单和 AddPad/Popup/AddBar 结构。
  • 全面审查控件属性:Grid(单元格事件、滚动、高亮色、数据源绑定)、TextBox/ComboBox(对齐、文本选择、KeyPress)、Form/Container(AutoCenter、WindowState、边框、Resize/Activate 事件)等均获完整映射。
  • 数据环境增强:改进 FormSet 中关系(ParentAlias、RelationalExpr)的处理与传播。

3. 编译器、宏编译器与语言支持

  • 全局 USING 支持:完整处理 ‎GLOBAL USING 语句,符合现代 .NET 模式。
  • XML 文档生成修复:解决因 Roslyn 变更导致的异常,并强制在文档生成时使用调试编译器。
  • 宏编译器
    • 添加 ‎[NeedsAccessToLocals] 属性,保证宏展开时正确访问局部变量。
    • 修复 PRIVATE 变量在传递给带有引用参数的函数后未更新的回归问题。
  • 后期绑定:优先调用 ‎NEW 方法,修复构造函数被绕过的问题。
  • 引入 XSHARP3 预处理器定义;PUBLIC 构建配置中禁用 VO 和 Vulcan 方言。
  • 修复带点名称的 ‎Emit module error 丢失错误信息、调整 ‎RangeExpression 规则等问题。

4. 运行时、RDD 与数据引擎

SQLRDD 增强

  • 实现基于 SQL Server 时间戳的 记录锁定(RLock、FLock、UnLock),提升并发安全性。
  • 为索引标签添加 ‎Descending 属性,正确生成降序 SQL 并影响查找操作。
  • 引入 分页和缓冲(PageSize / BufferSize),优化大数据集 Seek/Goto 性能。
  • 优化数据检索:当记录 ID 为当前值时避免不必要的数据库往返。
  • 修复 ORDER BY 重复 ID 列名、整数列 GetInt 方法,支持将索引条件加入 WHERE 子句。

DBFVFP 驱动修复

  • 修复 AutoIncrement 列的锁定问题。
  • 允许索引表达式中使用 ‎Trim(),自动以空格填充键值。
  • 修正 ‎Recall 命令行为。
  • 复制索引结构时自动排除因字段缺失而失败的标记。

核心工作区重构

  • 将 ‎_OpenInfo 字段移入 ‎Workarea 基类并公开访问接口。
  • 新增 ‎_IsFileBased 字段区分文件型 RDD,强制表模式必须存在 ‎recno 列。
  • Memo 字段最大宽度转为动态属性,修复宽度计算僵化问题。

其他运行时改进

  • 文件句柄参数从 INT 统一改为 INT64,确保 AnyCpu 文件操作正常。
  • XPP 区域设置支持(NLS 定义、‎SetLocale())。
  • 添加可空类型隐式运算符;引入 ‎NoIVarGetSelf() / ‎NoIVarPutSelf() 防止隐藏字段意外赋值。
  • 修复 ‎USUAL NIL 转换异常、Core 方言返回 NIL 等问题。

5. 项目系统、构建与 NuGet

  • 解决方案格式升级:主解决方案转换为 ‎.slnx 格式,并创建 ‎Master.slnx 统一编排构建。
  • 项目模板:模板名称统一添加“(SDK)”后缀与 ‎.SDK 标识;VOGUI 依赖项目支持 .NET 4.6/4.7/4.8;重新添加 Linux 和 macOS 支持。
  • NuGet 包管理
    • 离线包添加时自动采用正确通配符模式,兼容 nuget.org。
    • 非 nuget.org 源直接添加离线包而不覆盖现有配置。
    • 包内随附 XML 文档(中文文档已加入),规范文件从 ‎.txt 转为 ‎.xml
    • 使用新的 XSharp 数字证书对包进行签名。
  • 构建任务:检测 ‎.rc 文件 BOM 并生成警告;修复 ‎.xaml.prg 依赖规则;移动 ‎VFPProperties.xh 避免全局复制。
  • 版本号:升级至 3.0.0.4

6. 文档、测试与质量保证

文档

  • 将单一 ‎VersionHistory.xml 拆分为 XSharp 1 和 XSharp 2 独立文件。
  • 大规模更新 西班牙语和中文 文档,提取运行时嵌入式 XML 注释至外部文件以便维护。
  • 新增 FoxPro 报表结构 PDF 文档,补充 VFP 和 Visual Objects 移植指南。
  • 运行时错误消息改用 ‎__FUNCTION__ 宏,提高准确性。

测试

  • 新增 C957 ~ C967 编译器回归测试,覆盖数组、后期绑定、宏展开等边界情况。
  • 添加 ‎MathTests、‎MiscTests、‎StringExtendedTests、‎AUsedTests 等专项测试套件。
  • 借助 AI 辅助生成部分测试用例,提前暴露并修复了若干晦涩缺陷。
  • 移除测试项目中的 XUnit 程序集引用,统一测试配置。

7. 其他值得关注的更新

  • GitHub Actions 工作流已更新至最新 action 版本。
  • 添加 ‎src/TODO.md 聚合待办事项,贡献者列表更新。
  • 清理旧项目、移除对已弃用 Vulcan Runtime 的引用,修正多个拼写错误。
  • AutoCloseMessageBox 标记为过时,引导使用新 API。
  • 编译器调试器表达式评估增加 ‎CompileDisplayAttribute 回退支持。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 近期,X# 项目在 Visual Studio 集成现代化、Visual FoxPro 兼容性、运行时稳定性和项目系统方面进行了密集迭代。以下按功能领域汇总关键变更。
    • 1. Visual Studio 集成与开发体验
    • 2. Visual FoxPro 兼容性全面提升
    • 3. 编译器、宏编译器与语言支持
    • 4. 运行时、RDD 与数据引擎
    • 5. 项目系统、构建与 NuGet
    • 6. 文档、测试与质量保证
    • 7. 其他值得关注的更新
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档