跳到主要内容

2021

v4.0

  • 2022/01/05~11
    • 重构模板模块.

    • 优化预热性能.

    • 增加重要成员的注释提示.

    • 优化 Using 拼接逻辑.

  • 2022/01/01~05
    • 重构反解器模块.

    • 重构语义过滤模块.

    • 重构日志模块.

    • 重构语法模块.

    • 增加一些扩展方法.

    • 重构编译模块.

    • 重构域上下文.

    • 重构插件管理, 增加 LoadBehaviorEnum 枚举以供用户选择域加载插件的行为.

    • 重构引用管理, 使用 LoadBehaviorEnum 枚举以便开发者决定不同域引用集合的合并策略.

  • 2021/12/28
    • 优化重构内置的语义过滤器.

    • 优化重构CS0104语义扩展.

  • 2021/12/27
    • 优化全局 Using 的获取方式.

    • 增加 NatashaOperator 静态操作类, 方便快速创建其他操作类, 配合域上下文使用.

    • InitializeAndPreheating 预热方法支持 func<string,bool> 参数, 以便开发者排除无用的引用加载.

  • 2021/12/22
    • 分离各运行时对应的 Microsoft.Extensions.DependencyModel 版本.

    • 升级 DotNetCore.SourceLink.Environment 至 3.1.0 版本.

    • Natasha 编译单元增加 DisableSemanticCheck/EnableSemanticCheck 方法以供开发者选择是否开启语义处理, 关闭可提升性能.

    • 屏蔽 CS0219 错误.

  • 2021/12/03
    • 修复 XML 注释编译的 BUG, 支持 XML 注释文件生成.

    • Natasha 编译单元增加 SetDllFilePath/SetPdbFilePath/SetXmlFilePath 方法,开发者可以按需创建对应的文件.

    • Natasha 编译单元移除 AssemblyBuildKind 枚举, 编译输出文件由开发者控制.

    • Natasha 编译单元的可空引用开关默认为关闭, 并建议在手动传字符串编译的场景下手动开启.

  • 2021/11/26
    • 优化插件加载方式,添加"黑名单"依赖,控制插件依赖的加载.
  • 2021/11/16
    • 完善 UT 测试, 增加委托代理尝试解决可空引用传递失效的问题.

    • 调整部分 API 的反射逻辑.

  • 2021/11/15
    • 编译器增加可空引用选项开关, 增加 AssemblyCSharpBuilder 扩展方法 EnableNullableCompile/DisableNullableCompile.

    • 增加可空引用模板.

  • 2021/11/12
    • 移植 .NET6.0 可空类型成员反射 API 至 NETCOREAPP3.1 及 NET5.0 运行时.

    • 增加复杂可空引用 UT 测试.

    • 增加成员可空类型反解, 对事件/字段/属性/参数可反解.

  • 2021/11/10
    • 开启可空引用, 重构 Natasha, 重写部分异常处理逻辑.

    • 升级 Natasha 的依赖环境 DotNetCore.SourceLink.EnvironmentDotNetCore.Compile.Environment.

    • 改造 Natasha 的 msbuild 构建项.

    • 升级依赖和目标框架以增加 .NET6.0 支持.

    • 升级依赖以增加 C#10 语法支持.

  • 2021/11/09
    • 项目移除对 core3.1 以下版本的支持.

    • 加速初始化预热.

    • 升级 Microsoft.Extensions.DependencyModel 到6.0版本.

    • core3.1 兼容 SkipLocalsInitAttribute 属性.

    • Natasha C# 编译器增加 SupportSkipLocalInit 方法以兼容 Microsoft.Extensions.DependencyModel 6.0版本带来了多义性引用问题.

    • 编译器模板增加 Api : ConfigComplier 允许开发者配置编译器.

    • 编译器模板变动 Api : ConfigCompilation 允许开发者配置编译器选项.

    • 更新编译绑定标识.

v3.6.0.0

  • 2021/11/08
    • 移除部分无用代码,合并项目.

    • 项目移除对 core3.1 以下版本的支持.

    • 加速初始化预热.

    • 增加插件加载方法的参数, 支持用户选择是否加载完整的依赖引用. 该参数影响插件加载到非主域时, 接口和抽象类是否使用主域中定义的.

    • 更换语法树格式化API.

    • 支持动态记录成功日志的方法,默认不记录, NDelegate/Nxx/.RandomDomain(item=>item.Disable/EnableSucceedLog()).

    • 日志目录由 /log/ 更换到 /NatashaLogs/

v3.5.0.0

  • 2021/09/07
    • 源代码增加 DEBUG 模式下耗时回显.

    • 修复预热函数中引用初始化的错误.

    • 最新版本归档至 Achive31 分支中.

v3.4.0.0

  • 2021/08/16
    • DomainManagement 优化初始化异常提示.

    • 反解器修复空范型类型的反解.

    • 项目归档至 Achive31 分支中, 今后版本将从 core3.1版本起步兼容.

v3.1.0.0

  • 2021/07/14
    • 还原支持 standard2.0 及 core2.0 以上的各版本.

    • 优化 DomainBase 类的插件引用管理方案, 进一步统一引用管理, 移除不必要的对外暴露的方法.

    • 优化 NatashaAssemblyDomain 的实现, 添加 core3.0- 版本的依赖反解, 插件行为异同:

      • core3.0 + 解析 json 文件并加载程序集, 支持插件依赖文件版本覆盖, 对插件主体进行升级.

      • core3.0 - 仅扫描同目录下 dll 并加载程序集, 不能对插件依赖进行升级.

    • 优化 编译流程及事件调用.

    • 优化 命名空间反解流程, 屏蔽 ExportedTypes 无法导出而引发异常.

    • 优化 模板类 API 命名及归类, 区分 Set 和 Append 操作.

    • 增加 命名控件内容追加模板, 支持开发者向同一命名空间中追加代码.

    • 增加 Record 数据类型的语法节点自动获取的 API.

    • 重命名各基础类字段及事件.

    • Natasha.CSharp.Extension.InvisibleInstance 扩展将以 CS0103 错误为基准,对调用链进行补充.


v3.0.0.0

  • 2021/06/25
    • 重构引擎, 增加语义分析 API, 用户可编写语义解析扩展, 得益于强大的语义分析器, 我们对编译引擎进行了升级和重构.

    • 内置 CS0246/CS0234 语义分析处理器.

    • 移除 CS0104 处理到 Natasha.CSharp.Extension.Ambiguity 扩展包中, 我们认为二义性引用不应该成为普遍的问题.

    • 新增 CS8019 无用 using 的处理, 精简生成的代码, 处理后脚本的 using 为按需引用,需要什么 using 脚本会自动呈现什么 using.

    • 更改 NDelegate 操作类中传递域为传递编译器, 新增 AddUsing API, 尽管你可能永远用不到.

    • 移除 standard2.0 支持, 改为 netcoreapp2.0/2.1/2.2 具体版本支持.

    • 开放了 netcore2.1/2.2 版本对 readonly / ref 结构体的反解支持.

    • 发布 Natasha.CSharp.Extension.InvisibleInstance 扩展包, 免去脚本中的方法第一个参数的引用调用, 比如: arg.Show 可以直接写为 Show.


v2.1.0.0

  • 2021/05/09
    • 优化引擎, 精简编译流程, 移除不常用事件.

    • 域增加 AddReferenceFrom[Type/Type<T>/Assembly] 3 种添加引用的 API.

    • 反解器增加扩展方法:

      • GetDevelopNameWithoutFlag 获取无标志类型名 : System.Collections.Generic.List<>
      • GetDevelopName 获取全类型名 : System.Collections.Generic.List<T>
      • GetRuntimeName 获取运行时类名 : List<int>
    • 增加强名编译.

    • 规范文件结构以及辅助类命名.