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文件的问题.
推荐阅读
- gitee仓库上传文件的步骤
- 07 ClickHouseClickHouse数据库引擎解析
- 使用EF Core更新与修改生产数据库
- 浅谈-动态路由之OSPF的理解
- TDengine的数据建模?库、表、超级表是什么?怎么用?
- 利用Pandas处理数据 缺失值的处理 数据库的使用 python-数据描述与分析2
- 有趣实验 .NET下数据库的负载均衡(续)
- Seal-Report: 开放式数据库报表工具
- 苹果动态壁纸怎么设置(苹果设置动态锁屏)
- iPhone怎么设置动态壁纸(iphone12怎么设置动态壁纸)