简体中文
English 简体中文 繁體中文
Methodox 首页

Pure 迁移指南

第 1 版(Pure)与第 2 版(Pure 2)

Pure 2 打破了向后兼容性。你可能需要执行以下操作:

  1. 独立脚本应显式添加 using static System.Console;
  2. 导入 DLL 时,Pure 不再自动导入 Main 类,因此你需要手动导入所需内容。例如 using static <MyLibrary>.Main;

Pure 2 与 Pure(1)不向后兼容,不过 Pure(1)很可能在一定程度上与 Pure 2 向前兼容。

.Net 7 升级到 .Net 8

总体而言,此次升级在 API 或 Pure 语言核心结构行为方面不会带来破坏性变更。(唯一已知的变更是 Notebook 的可执行文件路径)

以下列出了我们从 .Net 7 迁移到 .Net 8 所采取的步骤,可作为未来升级的参考:

  • 将源代码中所有提到 .Net 7 的地方替换为 .Net 8,并修正相关注释/代码;搜索:.net 7 和 net7
  • 将所有 .csproj 的目标改为 net 8
  • 确保所有项目的包引用都相应升级,尤其是与代码编译服务相关的部分;可以全局搜索 7.0 来找出这些位置;更新与 Microsoft.CodeAnalysis.CSharp 相关的模块依赖
  • 运行所有可用的单元测试
  • 如果 dotnet CLI 参数语法有任何变化,更新 PublishAll.ps1 脚本
  • 递增并更新 CoreVersion 变量及相应的更新日志字符串。
  • 测试并确保 Import 仍然有效(在 TryDownloadNugetPackage 中实现),并以 .Net 8 为目标
  • 删除 Publish 和 .vs 文件夹中的所有内容并全新构建;删除 AppData\Local\Temp\Pure\NugetDownloads
  • 按照 https://learn.microsoft.com/en-us/aspnet/core/migration/70-80 进行核对,查看是否有其他步骤
  • 好在我们没有使用 Blazor、ASP.Net Core 或任何其他大型框架,否则迁移会很麻烦——今后我们也应继续避免使用
  • 核心库:确保 ODBC 和 Razor 正常工作
  • 更新组织页面,说明我们使用的是 .Net 8 而不是 .Net 7

我们可以确定以下组件是对 .Net 版本敏感的“脆弱”组件:

  • Core 模块对 Roslyn 编译服务的依赖
  • Razor 模块对 RazorEngine.NetCore 的依赖
  • Import 宏的行为
  • 任何 Windows 专用模块(例如绘图)

用户升级指南

  • 根据用户脚本中引用的 NuGet 包是否与 .Net 8 不兼容,决定是否需要升级
  • 运行 .Net 8 运行时以及 ASP.Net Core 托管捆绑包:(Windows)ASP.Net Core Hosting Bundle、.Net 8 Runtime、.Net Desktop Runtime
  • 安装最新的 Pure 发行版
  • 确保用户脚本所依赖的 PATH 中的所有模块都已更新并针对 .Net 8 构建
  • (此步骤必不可少)删除 AppData\Local\Temp\Pure\NugetDownloads 文件夹中的内容,以便全新开始
  • 破坏性变更:如果使用了 Notebook,它的路径已经移动,因此可能需要修改 Windows 快捷方式的目标路径,或将新的可执行文件路径更新到环境变量 PATH 中——它现在位于 <Pure Distribution Folder>\Windows\Notebook.exe

参考资料