动态编译库 Natasha 5.0 兼容版本发布( 二 )

assemblyCSharpBuilder.AddSemanticAnalysistor(Func<AssemblyCSharpBuilder, CSharpCompilation, CSharpCompilation>) (需要有语法语义相关编程经验).案例一个尽可能复杂的案例:
var action = NDelegate//使用随机域 也可以使用 CreateDomain / UseDomain / DefaultDomain//Core3.1以下仅能使用 DefaultDomain.DefaultDomain()//[可选API] 必要时使用 ConfigBuilder 配置编译单元(下面只为展示API, 有需求就用, 没需求不用写).ConfigBuilder(builder => builder//配置编译器选项 .ConfigCompilerOption(opt => opt//配置平台.SetPlatform(Microsoft.CodeAnalysis.Platform.AnyCpu)//Release 方式编译.CompileAsRelease()//开启可空警告.SetNullableCompile(Microsoft.CodeAnalysis.NullableContextOptions.Warnings))//配置语法选项 .ConfigSyntaxOptions(opt => opt//配置支持的脚本语言版本.WithLanguageVersion(Microsoft.CodeAnalysis.CSharp.LanguageVersion.CSharp8))//禁用语义检查与过滤 .DisableSemanticCheck()) //[可选API] 配置该方法所在的类模板.ConfigClass(item => item//给类配置一个名字,不用随即名.Name("myClass")//不使用默认域的 Using 缓存.NoGlobalUsing()) //[可选API] 为类模板添加 using 引用.ConfigUsing("System") //这里的 API 参照定义的委托, 包括委托的参数 //例如 Action<int> / Func<int,int> 拥有一个参数, 参数的名字请在 Action<int> / Func<int,int> 上 F12 查看定义获取参数名..Action("Console.WriteLine(\"Hello World!\");");action(); /*Output: Hello World!*/更多案例 更多文档
更新日志

  • 2022/09/05 - 2022/09/21
    • 分离引擎, 项目分为多域和单域, 以部分类方式合并 API.
    • 使用 IndexOf 替代 Contans 方法做兼容.
    • 支持 netstandard2.0 及 coreapp3.1,net5.0,net6.0 版本.
    • 升级 DotNetCore.SourceLink.Environment 依赖以支持 netstandard2.0/1 版本.
    • 升级 DotNetCore.Compile.Environment 依赖以支持 netstandard2.0/1 版本.
  • 2022/09/30 - 2022/10/09
    • 使用 Assembly.ReflectionOnlyLoad 替代 MetadataLoadContext 解决单域引擎只读元数据的问题.
    • 优化单域引擎初始化过程中扫描源dll文件的问题.

推荐阅读