ToB企服应用市场:ToB评测及商务社交产业平台

标题: 动态编译库 Natasha 5.0 兼容版本发布 [打印本页]

作者: 三尺非寒    时间: 2022-10-10 22:23
标题: 动态编译库 Natasha 5.0 兼容版本发布
Natasha 5.0 版本已于 2022/10/10 日发布, 此次大版本更迭带来了兼容性支持, 目前 Natasha 可以兼容 standard2.0 及 coreapp3.1 以上版本.
下载使用 NuGet\Install-Package DotNetCore.Natasha.CSharp -Version 5.0.0.

引擎分离

该版本分离了编译引擎, Natasha 将根据  {NET VERSION}  目标版本来适配对外的 API.


代码分离

本次版本在源码层,分为 MultiDomain / Public / SingleDomain 三部分, 并使用自定义宏 MULTI 来区分单/多域, 从工程文件上做兼容隔离允许 Natasha 后续的升级工作不必过多的关注兼容性代码,  多域引擎仍然是 Natasha 未来版本的主战场, 迭代优化工作将在 MultiDomain 文件夹中进行.
相比较有特色的 API {OperatorClass}.DefaultDomain/CreateDomain/RandomDomain/UseDomain 单域版仅有 {OperatorClass}.DefaultDomain 一个 API, 单域引擎的编译结果均加载到主域中, 因此也不具备隔离和卸载功能.

使用须知

案例

一个尽可能复杂的案例:
  1. var action = NDelegate
  2. //使用随机域 也可以使用 CreateDomain / UseDomain / DefaultDomain
  3. //Core3.1以下仅能使用 DefaultDomain
  4. .DefaultDomain()
  5. //[可选API] 必要时使用 ConfigBuilder 配置编译单元(下面只为展示API, 有需求就用, 没需求不用写)
  6. .ConfigBuilder(builder => builder
  7.   //配置编译器选项
  8. .ConfigCompilerOption(opt => opt
  9.     //配置平台
  10.    .SetPlatform(Microsoft.CodeAnalysis.Platform.AnyCpu)
  11.     //Release 方式编译
  12.    .CompileAsRelease()
  13.     //开启可空警告
  14.    .SetNullableCompile(Microsoft.CodeAnalysis.NullableContextOptions.Warnings))
  15.   //配置语法选项
  16. .ConfigSyntaxOptions(opt => opt
  17.     //配置支持的脚本语言版本
  18.    .WithLanguageVersion(Microsoft.CodeAnalysis.CSharp.LanguageVersion.CSharp8))
  19.   //禁用语义检查与过滤
  20. .DisableSemanticCheck()
  21. )
  22. //[可选API] 配置该方法所在的类模板
  23. .ConfigClass(item => item
  24.    //给类配置一个名字,不用随即名
  25.   .Name("myClass")
  26.    //不使用默认域的 Using 缓存
  27.   .NoGlobalUsing())
  28. //[可选API] 为类模板添加 using 引用
  29. .ConfigUsing("System")
  30. //这里的 API 参照定义的委托, 包括委托的参数
  31. //例如 Action<int> / Func<int,int> 拥有一个参数, 参数的名字请在 Action<int> / Func<int,int> 上 F12 查看定义获取参数名.
  32. .Action("Console.WriteLine("Hello World!");");
  33. action(); /*Output: Hello World!*/
复制代码
更多案例 更多文档

  更新日志


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4