Skip to content

基于 Roslyn 的 C# 动态程序集构建库,该库允许开发者在运行时使用 C# 代码构建域 / 程序集 / 类 / 结构体 / 枚举 / 接口 / 方法等,使得程序在运行的时候可以增加新的模块及功能。Natasha 集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能。 该库遵循完整的编译流程,提供完整的错误提示, 可自动添加引用,完善的数据结构构建模板让开发者只专注于程序集脚本的编写,兼容 stanadard2.0 / netcoreapp3.0+, 跨平台,统一、简便的链式 API。 且我们会尽快修复您的问题及回复您的 issue.

master
Go to file
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

中文 | English

你们的反馈是我的动力,文档还有很多不足之处;

当你看完文档之后仍然不知道如何实现你的需求,您可以查看 FAQ 或者在issue中提出你的需求。

Natasha

Member project of .NET Core Community NuGet Badge Gitter Badge GitHub license

    基于 Roslyn 的 C# 动态程序集构建库,该库允许开发者在运行时使用 C# 代码构建域 / 程序集 / 类 / 结构体 / 枚举 / 接口 / 方法等,使得程序在运行的时候可以增加新的模块及功能。Natasha 集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能。 该库遵循完整的编译流程,提供完整的错误提示, 可自动添加引用,完善的数据结构构建模板让开发者只专注于程序集脚本的编写,兼容 netcoreapp2.0+ / netcoreapp3.0+, 跨平台,统一、简便的链式 API。 且我们会尽快修复您的问题及回复您的 issue.
更多的动图展示

展示



类库信息(Library Info)

GitHub tag (latest SemVer) GitHub repo size GitHub commit activity Codecov

Script .NET Env Document
Compile standard standard standard standard wiki
CI Platform Build Server Master Build
Github os Build status
Azure Windows Build Status
Azure linux Build Status
Azure mac Build Status


使用方法(User Api):

顺序 操作行为 操作内容 说明
1 引类库 DotNetCore.Natasha.CSharp.All 该页面提供最新版操作,旧版详见
2 初始化 NatashaInitializer.InitializeAndPreheating(); / Initialize(); 预热会慢一点,后面编译就快了,也可以只初始化不预热
3 写代码 使用说明 https://natasha.dotnetcore.xyz/ 可联系作者: 1648107003@qq.com查看FAQ提出问题


发布日志

  • 2019年发布日志 [已归档]
  • 2020年发布日志 [进行中]
    • 2020-08-06 : 发布 v4.1.0.0,支持域内动态编程时插件 Using 引用覆盖 以及 动态生成程序集的 Using 引用覆盖, 减少开发者在域内编程时对 Using 的过多关注。 升级 Natasha.Framework; 添加 GetReferenceElements API 以便返回当前域所有的引用,增加 AddAssemblyEvent/RemoveAssemblyEvent 事件,在程序集加载与移除操作时触发。 增加方法返回值的 ref 修饰的反解。增加 Natasha.CSharp.All 库,提供组件库的自动引用。

    • 2020-10-10 : 发布 Natasha.CSharp.All v2.0.0.0,重整项目结构,分离出 C# 相关组件,修复域管理操作类对域的弱引用关系,完善周边类库。

    • 2020-10-28 : 发布 Natasha.CSharp.All v2.0.1.1,使用初始化开关,避免多次初始化调用,支持 netcore3.1 Runtime 版本。

    • 2020-11-14 : 发布 Natasha.CSharp.All v2.0.2.1,支持 .NET5 ,初始化函数增加参数,false 代表不初始化默认域的引用,此时引用需要在域中手动添加。

    • 2020-11-20 : 发布 Natasha.CSharp.All v2.0.2.2,支持 .NET5 / C# 9 ;增加 NRecord 构建模板;增加 RecordProperty(name) 只读包装属性,增加 OOP 模板 Property 构建是关于 init 类型的 API; 增加支持 fixed 修饰符;.NET5 版本 增加 SkipInit 方法跳过初始化,即 SkipLocalsInit 特性(注解),可用在存储结构构建以及方法上;修复日志输出格式。

    • 2020-11-24 : 发布 Natasha.CSharp.All v2.0.2.3,修复禁断警告功能,升级周边类库依赖。



生态周边

项目名称 项目地址 项目简介
NatashaPad Github 由 Roslyn 和 Natasha 支持的另一种dotnet调试工具,如 LinqPad 和 dotnet fiddle。
Leo Github 基于 Natasha 和 查找树算法的高速反射类,可以操作对象的属性以及字段。
DeepClone Github 由 Natasha 的高性能深度克隆库。
BTFindTreee Github 快速查找算法的构建,包括哈希二分查找,字串模糊查找,字串归并精确查找。
Papper Github 对语法树解析库,主要目标时服务于 SG(Source Generator)技术。
RuntimeToDynamic Github 将运行时数据压入到动态代理类中,以方便其他动态构建时对其进行复用。
DynamicDictionary Github 高速动态缓存,在只读并发场景中提供超高性能的数据查找功能。
Aries Github 对 FreeSql 的高度封装,提供高性能、直观的 外联 / 乐观锁 / CURD 操作。


开发计划

2.0+ 计划

  • 编写英文文档,以后将以英文文档为主
  • 调研 .NET6 中性能优化的新特性
  • 完善 UT 测试
  • 挣钱, 生存下来

周边项目计划

  • BTF 算法

    • 每周定时跑算法随机测试程序
    • 持续评估 span 序列比较方法 及 指针转换比较 的性能
    • 评估 Trie 及变种 与 BTF 算法的性能差距
  • 元数据

    • 优化性能
    • 精确解析
    • 持续评估封装架构的设计方案
  • 改造 Leo

    • 持续优化性能
    • 私有支持
    • 评估是否支持 AOP
    • 评估 Leo 代理方式 和 DynmaicDictionary 代理方式 在 R2D 模板下的异同及抽象
    • 优化静态自动机代码
    • 使用委托指针优化性能
  • 依赖还原库

    • NET 模块
    • NUGET 模块
    • FOLDER SCAN 模块
    • 跨平台 模块
  • 定制语法/语法糖 to Natasha

  • 持续评估 Natasha 在灵活授权模型上的应用

  • 持续搜集反编译的需求

  • 调研 JAVA to C#

  • 调研 GO to C#

  • 考虑要不要调研 PHP to C#

  • 谁能来帮我一起搞,帮我点上左边的小对号?

欢迎大家提交PR



性能测试

  • 动态初始化性能测试(对照组: emit, origin)
    初始化性能测试
  • 内存及CPU监测截图
    内存及CPU


赞助:

捐助明细

  • ****天下 10元
  • 文航 5元
  • TonyQu 10元


License

FOSSA Status

About

基于 Roslyn 的 C# 动态程序集构建库,该库允许开发者在运行时使用 C# 代码构建域 / 程序集 / 类 / 结构体 / 枚举 / 接口 / 方法等,使得程序在运行的时候可以增加新的模块及功能。Natasha 集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能。 该库遵循完整的编译流程,提供完整的错误提示, 可自动添加引用,完善的数据结构构建模板让开发者只专注于程序集脚本的编写,兼容 stanadard2.0 / netcoreapp3.0+, 跨平台,统一、简便的链式 API。 且我们会尽快修复您的问题及回复您的 issue.

Topics

Resources

License

Languages