# AutoCADDotNetLibrary.Debug
**Repository Path**: fangmin723/AutoCADDotNetLibrary.Debug
## Basic Information
- **Project Name**: AutoCADDotNetLibrary.Debug
- **Description**: AutoCAD二次开发,用于生成测试功能的脚本。
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2023-05-27
- **Last Updated**: 2024-06-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AutoCADDotNetLibrary.Debug
提供`AutoCAD`二次开发,用于生成测试功能的脚本。

## 快速使用
在项目(.csproj)中使用如下示例:
```xml
net461
2013
2013
2024
```
## 属性
| 属性 | 说明 |
| ------------------- | --------------------------------------------------------------------- |
| AutoCADDebugVersion | 指定测试环境的 AutoCAD 版本。 |
| AutoCADDescription | .NET 程序集的说明,默认值为项目名称。 |
| AutoCADLoadctrls | 控制加载 .NET 程序集的方式和时间,默认值为`2`。 |
| AutoCADMinVersion | 指定`bat`脚本的最小 AutoCAD 版本。 |
| AutoCADMaxVersion | 指定`bat`脚本的最大 AutoCAD 版本。 |
| IsDeleteCUIX | 生成`注销.bat`脚本时,是否加入删除`cuix`文件的功能,默认值为`false`。 |
| IsDynamicLoad | 是否启用`动态加载`的功能,默认值为`false`。(**不建议使用**) |
## 功能
#### 基础知识
插件程序写入[注册表](https://help.autodesk.com/view/OARX/2019/CHS/?guid=GUID-70D60274-57E0-4B22-8D0C-3C7F212A7CAF),AutoCAD 则会自动加载插件程序,而无需手动`netload`加载。
#### AutoCADDebugVersion
当使用`Visual Studio`的`重新生成`功能时,项目写入`AutoCADDebugVersion`指定的 AutoCAD 版本注册表。并指定此 AutoCAD 版本的`acad.exe`为测试环境(生成`Properties\launchSettings.json`)。
#### AutoCADDescription 和 AutoCADLoadctrls
- AutoCADDescription:注册表中的项 DESCRIPTION,代表.NET 程序集的说明,默认值为项目名称。
- AutoCADLoadctrls:注册表中的项 LOADER,代表控制加载 .NET 程序集的方式和时间,默认值为`2`。
- 1 - 检测到代理对象时加载应用程序
- 2 - 在启动时加载应用程序
- 4 - 在命令开始时加载应用程序
- 8 - 应用户或其他应用程序的请求加载应用程序
- 16 - 不加载应用程序
- 32 - 透明地加载应用程序
#### AutoCADMinVersion 和 AutoCADMaxVersion
生成`注册*.bat`和`注销.bat`的脚本,以便在其他电脑测试插件程序时,无需手动`netload`加载。
- `注册*.bat`:首先检测是否有此**注册表路径**,成功时写入注册表,错误时不写入。
- `注销.bat`:删除插件程序的所有注册表路径。
- `IsDeleteCUIX`:生成`注销.bat`脚本时,是否加入删除`cuix`文件的功能,默认值为`false`。
#### 清理
当使用`Visual Studio`的`清理`功能时,删除`bat`脚本,并执行`注销.bat`里的内容,运行完毕后删除。
### IsDynamicLoad(不建议使用)
#### 基础知识
`动态加载`:为了避免测试时频繁重启`AutoCAD`产生的概念。原理为插件测试时,不被**占用**,可以继续编译生成。
`nuget`包中的`AutoCADDotNetLibrary.Debug.dll`为`动态加载`插件,负责**使用反射技术**二进制读取生成的插件程序,之后插件程序就不会被**占用**。
| `AutoCADDotNetLibrary.Debug.dll` | 说明 |
| -------------------------------- | ------------------------------------------ |
| `acload` | 加载生成的插件程序。 |
| `aclear` | 清理`AutoCADDotNetLibrary.Debug`的注册表。 |
#### 不建议使用原因
毕竟是**二进制方式读取**加载插件程序,确实会和以**直接**加载方式不同,因此会出现一些`bug`。本人不喜欢动态加载的方式调试插件,但如果其他开发人员喜欢使用这种方式,也可**尝试使用**。
#### 使用说明
```xml
net461
2014
true
$([System.Guid]::NewGuid())
```
1. 写入如上图的配置。
2. 修改程序代码,并生成项目。
3. AutoCAD 输入`acload`命令,即可使用最新的代码。
##### debug 调试模式
`Visual Studio`菜单中`调试->附加到进程->选择acad.exe`可进入**debug 调试模式**。这种方式只能在`AutoCAD2015`及以上版本使用。
建议看看`Visual Studio`插件[ReAttach](https://marketplace.visualstudio.com/items?itemName=ErlandR.ReAttach)。
### 兼容 AutoCAD 未来的版本
目前默认值仅支持`2006-2024`版本,如需扩大版本,详见[示例](/build/Test2013/Test2013.csproj)。
```xml
```
## QQ 群
