/Natasha

使用roslyn方案打造高性能动态代码,包括动态构建,运行时编译,插件管理,域管理等功能。(Use Roslyn to create efficient dynamic code. Including dynamic build and so on.)

Primary LanguageC#MIT LicenseMIT

中文 | English

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

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

Natasha

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

    基于 Roslyn 的动态编译库,为您提供高效率、高性能、可追踪的动态构建方案,兼容 stanadard2.0/netcoreapp3.0+ , 只需原生C#语法不用Emit, 更多的动图展示。 让您的动态方法更加容易编写、跟踪、维护。

展示

类库信息(Library Info)

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

Scan Name Status
Document wiki
Lang Compile
OS Windows linux mac
Rumtime standard standard standard

持续构建(CI Build Status)

CI Platform Build Server Master Build Master Test
Github linux/mac/windows Build status
Azure Windows Build Status Build Status
Azure Linux Build Status Build Status
Azure Mac Build Status Build Status

使用方法(User Api):


  • 引入 动态构建库: DotNetCore.Natasha

  • 引入 编译环境库: DotNetCore.Compile.Environment

  • 向引擎中注入定制的域: DomainManagement.RegisterDefault< AssemblyDomain >()

  • 敲代码

更多更新的参考文档:https://natasha.dotnetcore.xyz/


发布日志

  • 2020-03-12 : 发布v2.12.0.0, 增加新API NDelegate.XXX.Delegate() 系列API, Field模板构建增加了一个参数 int? fieldoffset。

  • 2020-03-16 : 发布v2.14.0.0, 为 RuntimeToDynamic 库优化些API ,NDelegate 类使用 Using 模板来提供命名空间预定义的操作, 方便提前定制命名空间;新增域、命名空间关联模板 NHandler 以便提供与当前信息相同的 delegate / class / interface / enum / struct 操作类;增加 ALink 抽象类约束,以便约束不带有功能的 Link 操作。

  • 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 抽象方法以返回插件带来的程序集,需要子类实现。


性能测试

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

Wiki审核

Teng(359768998@qq.com)


代码审核

WeihanLi


升级日志


生态微信群

为防止广告*扰,微信群已关闭,进群请发送您的微信号到 2765968624@qq.com 并说明进群原因。 如果未及时处理,请在 issue 中提醒我,QQ我平时不上了。 (发广告的先死个妈)


Natasha的动态调用模块: 已移至【NCaller】

Natasha的动态克隆模块: 已移至【DeepClone】

查找树算法: 【BTFindTreee】

快速动态缓存: 【DynamicCache】




License

FOSSA Status