Skip to content

Commit

Permalink
更新初始化器文档
Browse files Browse the repository at this point in the history
  • Loading branch information
NMSAzulX committed Nov 14, 2024
1 parent e9d80ea commit 64b01ac
Show file tree
Hide file tree
Showing 6 changed files with 194 additions and 4 deletions.
49 changes: 48 additions & 1 deletion src/docs/compile/002-SmartMode-Full.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,31 @@ title: "2.1 智能编译模式 - 实现程序集"
3. 智能编译。

## 预热案例
## 链式预热

从 V9 版本起,Natasha 支持链式预热:

```cs
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//使用内存中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//过滤哪些元数据是不能用的,被排除的
.WithExcludeReferences((asm, asmStr) => { return false; })
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

如果不指定相关 API ,预热将跳过此行为,例如只写 WithXXXReference 不写 using 相关的 API, 那么 Natasha 预热时将只对元数据进行操作,不会缓存 using code. 这样做的好处是实现了高度定制化,按需预热。

### 普通预热
1. 泛型预热方法将自动创建 编译域创建者 单例。
Expand All @@ -22,13 +47,35 @@ title: "2.1 智能编译模式 - 实现程序集"
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(true, true);
//或者 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### Using缓存预热
第一次生成将 Using Code 写入缓存文件 Natasha.Namespace.cache 中,后续重启会自动从文件中加载。
指定第三个参数,第一次生成将 Using Code 写入缓存文件 Natasha.Namespace.cache 中,后续重启会自动从文件中加载。
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(true, truetrue);
//或者 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### 分开预热
Expand Down
48 changes: 48 additions & 0 deletions src/docs/compile/002-SmartMode-Ref.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,32 @@ title: "2.2 智能编译模式 - 引用程序集"

## 预热案例

### 链式预热

从 V9 版本起,Natasha 支持链式预热:

```cs
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//使用内存中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//过滤哪些元数据是不能用的,被排除的
.WithExcludeReferences((asm, asmStr) => { return false; })
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

如果不指定相关 API ,预热将跳过此行为,例如只写 WithXXXReference 不写 using 相关的 API, 那么 Natasha 预热时将只对元数据进行操作,不会缓存 using code. 这样做的好处是实现了高度定制化,按需预热。

### 普通预热
1. 泛型预热方法将自动创建 编译域创建者 单例。
2. 传入 false 参数以达到禁用运行时程序集的作用,Natasha 将会选择引用程序集预热。
Expand All @@ -24,13 +50,35 @@ title: "2.2 智能编译模式 - 引用程序集"
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(false, false);
//或 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### Using缓存预热
第一次生成将 Using Code 写入缓存文件 Natasha.Namespace.cache 中,后续重启会自动从文件中加载。
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(false, falsetrue);
//或 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### 分开预热
Expand Down
2 changes: 1 addition & 1 deletion src/docs/compile/006-Advanced.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,5 @@ builder.WithoutPrivateMembers();
builder
.OutputAsRefAssembly();
.WithFileOutput()
.WithoutInjectToDomain();
.CompileWithoutAssembly();
```
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,31 @@ title: "2.1 智能编译模式 - 实现程序集"
3. 智能编译。

## 预热案例
## 链式预热

从 V9 版本起,Natasha 支持链式预热:

```cs
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//使用内存中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//过滤哪些元数据是不能用的,被排除的
.WithExcludeReferences((asm, asmStr) => { return false; })
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

如果不指定相关 API ,预热将跳过此行为,例如只写 WithXXXReference 不写 using 相关的 API, 那么 Natasha 预热时将只对元数据进行操作,不会缓存 using code. 这样做的好处是实现了高度定制化,按需预热。

### 普通预热
1. 泛型预热方法将自动创建 编译域创建者 单例。
Expand All @@ -22,13 +47,35 @@ title: "2.1 智能编译模式 - 实现程序集"
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(true, true);
//或者 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### Using缓存预热
第一次生成将 Using Code 写入缓存文件 Natasha.Namespace.cache 中,后续重启会自动从文件中加载。
指定第三个参数,第一次生成将 Using Code 写入缓存文件 Natasha.Namespace.cache 中,后续重启会自动从文件中加载。
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(true, truetrue);
//或者 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### 分开预热
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,32 @@ title: "2.2 智能编译模式 - 引用程序集"

## 预热案例

### 链式预热

从 V9 版本起,Natasha 支持链式预热:

```cs
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//使用内存中的命名空间
.WithMemoryUsing()
//使用内存中的元数据
.WithMemoryReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//过滤哪些元数据是不能用的,被排除的
.WithExcludeReferences((asm, asmStr) => { return false; })
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

如果不指定相关 API ,预热将跳过此行为,例如只写 WithXXXReference 不写 using 相关的 API, 那么 Natasha 预热时将只对元数据进行操作,不会缓存 using code. 这样做的好处是实现了高度定制化,按需预热。

### 普通预热
1. 泛型预热方法将自动创建 编译域创建者 单例。
2. 传入 false 参数以达到禁用运行时程序集的作用,Natasha 将会选择引用程序集预热。
Expand All @@ -24,13 +50,35 @@ title: "2.2 智能编译模式 - 引用程序集"
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(false, false);
//或 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### Using缓存预热
第一次生成将 Using Code 写入缓存文件 Natasha.Namespace.cache 中,后续重启会自动从文件中加载。
```cs
//注册编译域并预热方法
NatashaManagement.Preheating<NatashaDomainCreator>(false, falsetrue);
//或 V9 版本
NatashaManagement
//获取链式构造器
.GetInitializer()
//使用引用程序集中的命名空间
.WithRefUsing()
//使用引用程序集中的元数据
.WithRefReference()
//使用文件来持久化缓存 命名空间
.WithFileUsingCache()
//注册域构造器
.Preheating<NatashaDomainCreator>();
```

### 分开预热
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,5 @@ builder.WithoutPrivateMembers();
builder
.OutputAsRefAssembly();
.WithFileOutput()
.WithoutInjectToDomain();
.CompileWithoutAssembly();
```

0 comments on commit 64b01ac

Please sign in to comment.