中文 | English
你们的反馈是我的动力,文档还有很多不足之处;
当你看完文档之后仍然不知道如何实现你的需求,您可以查看 FAQ 或者在issue中提出你的需求。
基于 Roslyn 的 C# 动态程序集构建库,该库允许开发者在运行时使用 C# 代码构建域 / 程序集 / 类 / 结构体 / 枚举 / 接口 / 方法等,使得程序在运行的时候可以增加新的模块及功能。Natasha 集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能。 该库遵循完整的编译流程,提供完整的错误提示, 可自动添加引用,完善的数据结构构建模板让开发者只专注于程序集脚本的编写,兼容 stanadard2.0 / netcoreapp3.0+, 跨平台,统一、简便的链式 API。 且我们会尽快修复您的问题及回复您的 issue.
更多的动图展示
Scan Name | Status |
---|---|
Document | |
Lang | |
OS | |
Rumtime |
CI Platform | Build Server | Master Build | Master Test |
---|---|---|---|
Github | linux/mac/windows | ||
Azure | Windows | ||
Azure | Linux | ||
Azure | Mac |
-
引入 动态构建库: DotNetCore.Natasha
-
引入 编译环境库: DotNetCore.Compile.Environment
-
向引擎中注入定制的域:
-
3.10.0.0 版本以前: DomainManagement.RegisterDefault< AssemblyDomain >();
-
3.10.0.0 版本及以后: AssemblyDomain.Init();
-
敲代码
更多更新的参考文档:https://natasha.dotnetcore.xyz/
-
2020-05-01 : 发布v3.0.0.0, 重构所有模块,上层API几乎没变,底层可以继承重写,移除部分 API。
-
2020-05-06 : 发布v3.0.2.0, 修复 修饰符模板状态机BUG, 增加 语法树选项 ForceAddSyntax 不管对错强制添加语法树。
-
2020-05-12 : 发布v3.2.0.0,增加插件自动装载 using 的功能,修复部分字段命名,Domain 部分抽象实现将在 AssemblyDomain 中实现,增加 GetPluginAssembies 抽象方法以返回插件带来的程序集,需要子类实现。
-
2020-06-01 : 发布v3.4.0.0,Oop 模板增加两种内容构造API , nclass.GetXXXBuilder 返回构造器,用户可以在外随意定制, nclass.Property/Field/Method/Ctor( builder) 支持直接传一个完好的 builder 进去。
-
2020-06-06 : 发布v3.8.0.0,修复模板状态机操作; 模板中API调整:DefinedName -> Name, DefinedType -> Type; 调整引擎 API 结构,减少 AssemblyCSharpBuilder 类 API 操作的层级;增加对私有字段动态调用的支持,OOP 模板新增API AllowPrivate; 由于精力有限周边项目将只对 R2D \ DynamicaCache 进行更新。
-
2020-06-07 : 发布v3.10.0.0,分离 SDK / SHARE 运行时库引用,以便支持系统类库的私有字段。调整初始化 API
DomainManagement.RegiestDefault
=>AssemblyDomain.Init();
; 引擎继续调整 API 结构,提升部分属性的暴露层级: AllowUnsafe 属性以支持非安全代码编译;OutputToFile 切换内存及文件编译模式;UseRelease 是否使用优化编译;OutputKind 编译类型的枚举,包括 dll / exe 等; Domain 域设置; AssemblyName 程序集名。精简引擎部分冗余代码。
- 分离 share 库,并作为域操作的一个选项
- 使用委托或Emit优化部分反射操作
- 增加并发库/常见内置类型的 share 引用测试
- 编译异常信息作为 Message 直接展示
- 调研编译环境继承的解决方案
- 发布针对 Roslyn 可继承成的编译环境包
- 增加泛型约束模板
- 生存下来,挣钱
- 反解器增加泛型类型约束反解
- 增加反解枚举,增强模板构造的状态机
- 重新检查反解器是否违反了单一职责(D2R)
- 改造 R2D
- 持续性能优化
- 评估模板职责
- 评估扩展方向
- 评估 NCaller 项目新需求的抽象
- 改造 DynmaicCache
- 持续优化性能
- 优化静态自动机
- BTF 算法
- 每周定时跑算法随机测试程序
- 持续评估
span
序列比较方法 及 指针转换比较 的性能 - 评估 Trie 及变种 与 BTF 算法的性能差距
- 元数据
- 优化性能
- 精确解析
- 持续评估封装架构的设计方案
- 改造 NCaller
- 持续优化性能
- 私有支持
- 设计动态变现功能和实现
- 设计只读功能维度和实现
- 评估 NCaller 代理方式 和 DynmaicCache 代理方式 在 R2D 模板下的异同及抽象
- 优化静态自动机代码
- 依赖还原库
- NET 模块
- NUGET 模块
- FOLDER SCAN 模块
- 跨平台 模块
- 定制语法/语法糖 to Natasha
- 持续评估 Natasha 在灵活授权模型上的应用
- 持续搜集反编译的需求
- 调研 JAVA to C#
- 调研 GO to C#
- 考虑要不要调研 PHP to C#
- 谁能来帮我一起搞,帮我点上左边的小对号?
欢迎大家提交PR
Teng(359768998@qq.com)
WeihanLi
为防止广告*扰,微信群已关闭,进群请发送您的微信号到 2765968624@qq.com 并说明进群原因。 如果未及时处理,请在 issue 中提醒我,QQ我平时不上了。 (发广告的先死个妈)