Skip to content

Commit

Permalink
perf: 修改readme\
Browse files Browse the repository at this point in the history
  • Loading branch information
uyoufu committed May 16, 2023
1 parent fce4e0a commit cbbae75
Showing 1 changed file with 42 additions and 20 deletions.
62 changes: 42 additions & 20 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## 简介

本插件名为:MSAddinTest,使开发者在不关闭 Microstation 的情况下,重新修改编译加载 DLL 库,在开发 Microstation 的 Addin 时,可以快速进行热重载和调试
本插件名为:MSAddinTest,使开发者在不关闭 Microstation 的情况下,可以实现代码热重载与快速调试

你只需在 keyin 前加上 `MSTest test` 即可调用现有的 keyin 命令。

Expand Down Expand Up @@ -34,18 +34,55 @@ it is so easy to use,when you want to invoke a keyin function,just put the s

测试 keyin 时,只需要 `MsTest test keyin` 即可执行测试,其它详见安装与使用。

## 安装与使用
## why not vs 原生热重载?

### 插件安装
vs 热重载对于以下修改不支持:

- 添加方法、字段、构造函数等
- 动态对象的增改

而 MSAddinTest 没有上述限制。

## MSAddinTest 安装

1. 拷贝 `MSAddinTest.dll` 到 Microstaion 中的 `mdlapp` 目录里
2. 启动 Microstation
3. 加载 `MSAddinTest.dll`
4. 输入 `MSTest install` 开启自动启动。可以输入 `MSTest uninstall` 关闭自动启动。

### 测试标记
## MSAddinTest 使用

### Debug 流程

**调试:**

1. 添加测试标记
2. 编译代码
3. 启动 Microstation

1. 输入 keyin `MSTest load` 加载待测试 dll
2. VS 中附加进程到 Micostation 开启调试
3. 输入 `MSTest test keyin` 调用待测试的 keyin 命令

**重新修改:**

1. 关闭调试

2. 编辑代码

3. 重新编译

MSAddinTest 支持对以下三种方式的接口进行调用。
4. 在 Microstation 中使用 `MsTest reload DllName` 来重新加载库文件

这一步可以通过设置实现自动重载:[mstest-set](#mstest-set)

5. 在 vs 中将 Microstation 重新附加到进程

6. 输入 `MSTest test keyin` 进行调试

### 添加测试标记

对于不同的类,标记方式略有不同,详见下文:

#### Addin 库

Expand Down Expand Up @@ -254,21 +291,6 @@ dllName.autoLoad=true,autoReload=true
>
> "_USTN_HOMEROOT" 变量位置下的`MSAddinTest\config.json`

## VisualStudio Debug 流程

**调试:**

1. 启动 Microstation
2. 通过输入 keyin `MSTest load` 加载待测试 dll
3. VS 中附加进程到 Micostation 开启调试

**重新修改:**

1. 关闭调试
2. 编辑代码
3. 重新编译,重新编译后即可在 Microstation 调用编辑后的代码
4. 如果要进行 debug,重新附加到进程即可

## 实现原理

通过向默认域中加载不同版本的程序集来实现 DLL 版本的重载。为了可以重新编译已加载的 DLL,需要保证加载的 DLL 在被加载后不被锁定,本程序采用从内存的加载方式实现了这个需求。
Expand Down

0 comments on commit cbbae75

Please sign in to comment.