# 多版本CAD编译 **Repository Path**: kingge/CadBuild ## Basic Information - **Project Name**: 多版本CAD编译 - **Description**: 解决在AutoCAD二次开发中,多个版本的编译问题。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-02-27 - **Last Updated**: 2023-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多版本CAD编译 解决在AutoCAD二次开发中,多个CAD版本的编译问题。 ## 加入其他的CAD版本 以增加CAD2022为例。 - 新建项目,名称为`多版本CAD编译2022`(后四位为必须为版本)。 - CAD2022版本的依赖手动添加到`多版本CAD编译2022`项目中,或`Directory.Build.props`中。 - 代码写在共享项目`SharedProject`中,`多版本CAD编译2022`项目负责编译源代码。 ## 可借鉴处 [Directory.Build.props](Directory.Build.props)放到任意目录下(推荐`.sln`文件同目录下),就会为这个目录下所有的`.csproj`项目设置**默认值**。 #### 使用前提 使用`类库:一个用于创建面向NET Standard或.NET Core的类库的项目`这个项目模板,创建项目。 #### 必要的变量设置 - CADVersion:开发CAD版本,例如`2012`(如果只针对一个版本)。 - RegistryProductRootKey:注册表位置。 - CADAcadLocation:acad.exe的目录位置。 #### 功能 - 为项目提供CAD编译的依赖。 - 注册[注册表](https://help.autodesk.com/view/OARX/2019/CHS/?guid=GUID-70D60274-57E0-4B22-8D0C-3C7F212A7CAF),以便打开AutoCAD时直接运行项目插件,而无需netload手动加载dll。 - 生成`注册.bat`和`注销.bat`的脚本。 - 生成测试的环境`launchSettings.json`。 > 以上功能会在编译时生成。 #### 多人合作情况 `Directory.Build.targets`后于`Directory.Build.props`执行,可以覆盖之前的项目变量。因此,小组成员可以把各自的环境变量写在[Directory.Build.targets](/Directory.Build.targets),并放到git可以推送的更上层目录,避免推送。如果为个人项目,可以删除`Directory.Build.targets`。 #### 遗憾的问题 [MSB3075](https://docs.microsoft.com/zh-cn/visualstudio/msbuild/errors/msb3075?view=vs-2022)导致不能操作注册表`HKEY_LOCAL_MACHINE`,因此不能找到`acad.exe`的位置,就不能省略掉`CADAcadLocation`变量。 ## 文档 #### Directory.Build.props [Directory.Build.props](https://docs.microsoft.com/zh-cn/visualstudio/msbuild/customize-your-build?view=vs-2022),这个目录内的所有`.csproj`项目都设置统一的默认值。 #### CADVersion `Directory.Build.props`里的[CADVersion](https://docs.microsoft.com/zh-cn/visualstudio/msbuild/property-functions?view=vs-2022#nested-property-functions)设为项目名称后四位数字。 #### 共享项目 [共享项目](https://docs.microsoft.com/zh-cn/xamarin/cross-platform/app-fundamentals/shared-projects?tabs=windows),使用共享项目可以编写由许多不同的应用程序项目引用的常见代码。