Skip to content

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

License

zhenlei520/Natasha

 
 

Repository files navigation

中文 | English

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

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


个性化需求请联系作者有偿定制! (按功能点与作者协商估算 或 1K/天)

由于 .NET Runtime 升级的速度和维护成本, Natasha 将在兼容 .NET 6.0 时放弃对 core3.1 版本以下版本的支持, 原版本将归至 Achive31 分支中.


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提出问题


发布日志

最新发布

v3.1.0.0

  • 2021/07/14
    • 同时支持 standard2.0 及 core2.0 以上的各版本.

    • 优化 DomainBase 类的插件引用管理方案, 进一步同意引用管理, 移除不必要的对外暴露的方法.

    • 优化 NatashaAssemblyDomain 的实现, 添加 core3.0- 版本的依赖反解, 插件行为异同:

      • core3.0 + 解析 json 文件并加载程序集, 支持插件依赖文件版本覆盖, 对插件主体进行升级.

      • core3.0 - 仅扫描同目录下 dll 并加载程序集, 不能对插件依赖进行升级.

    • 优化 编译流程及事件调用.

    • 优化 命名空间反解流程, 屏蔽 ExportedTypes 无法导出而引发异常.

    • 优化 模板类 API 命名及归类, 区分 Set 和 Append 操作.

    • 增加 命名控件内容追加模板, 支持开发者向同一命名空间中追加代码.

    • 增加 Record 数据类型的语法节点自动获取的 API.

    • 重命名各基础类字段及事件.

    • Natasha.CSharp.Extension.InvisibleInstance 扩展将以 CS0103 错误为基准,对调用链进行补充.



生态周边

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

Note:
flag : 维护且更新活跃,需求充足.
flag : 维护但需求较少, 按需更新发布.
flag : 需求极少, 暂不维护.



开发计划

近期计划

  • 挣钱, 生存下来
  • 调研 C# 10, 补充 OOP 模板.
  • 调研 .NET6.0, 增加性能优化点.
  • 搜集需求,增加语义扩展库.

性能测试

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


赞助:

捐助明细

  • iNeuOS工业互联网平台 100 元
  • ****天下 10元
  • 文航 5元
  • TonyQu 10元
  • Rwing 20元


License

FOSSA Status

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%