Pure 迁移指南
第 1 版(Pure)与第 2 版(Pure 2)
Pure 2 打破了向后兼容性。你可能需要执行以下操作:
- 独立脚本应显式添加
using static System.Console; - 导入 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相关的模块依赖 - 运行所有可用的单元测试
- 如果
dotnetCLI 参数语法有任何变化,更新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