.NET 9 - 尝试一下Open Api 的一些变化

1.简单介绍

.NET 9 中 OpenAPI 也有一些变化,这边也简单体验一下.NET 9 中的OpenAPI的变化,具体的话,可以参考如下文章,谢谢

.NET 9 OpenAPI

2. .NET 8的OpenAPI

这边以Visual Studio 2022中的ASP.NET Core Minimal API模板来创建项目,

2.1 创建项目并配置OpenAPI

1)创建项目时候,默认勾选 Enable OpenAPI support

        

2) 发现默认OpenAPI相关的配置如下

        

3)默认加入了 Swashbuckle.AspNetCore package

        

2.2 运行一下

可以访问生成的Swagger UI和OpenAPI document

Swagger UI - https://localhost:<port>/swagger/index.html
OpenAPI document(运行时候生成的) -  https://localhost:<port>/swagger/v1/swagger.json

3. .NET 9的Open API

3.1 创建项目并配置OpenAPI

1) 创建项目时,选中 Enable OpenAPI support

        

2) 创建项目后,发现在program文件中现在变成了

        builder.Servers.AddOpenApi()

        builder.Services.MapOpenApi()

        

3)默认加入的nuget package是 Microsoft.AspNetCore.OpenApi,之前的Swashbuckle.AspNetCore默认没有添加了

        

3.2 运行一下

发现Open API的UI没有了,但是有OpenAPI document 生成, 地址是

https://localhost:<port>/openapi/v1.json

.NET 9 中 使用 package Microsoft.AspNetCore.OpenApi就可以生成OpenAPI document了

3.3 添加 OpenAPI UI

如果需要Swagger UI,也可以添加package

Swashbuckle.AspNetCore.SwaggerUI

        

同时配置为,

        

3.4 再次运行一下

Swagger UI已经有了,地址是

https://localhost:<port>/swagger/index.html

3.5 生成OpenAPI Document

.NET 9 中,使用package Microsoft.Extensions.ApiDescription.Server ,可以在编译时生成OpenAPI document

1) 添加package

        

2) 配置项目

        


3) 编译项目,发现多了OpenAPI document

        

4. .NET 9 中的变化

1) 内置支持OpenAPI document生成(在运行时阶段),

2) 使用SwashBuckle.AspNetCore的方式可能有变化

.NET 9 中OpenAPI也添加了一些别的新特性,比如

Microsoft.AspNetCore.OpenApi package 是aot兼容的

5.总结

以上简单比较了一下.NET8与.NET9中的OpenAPI

如果哪里有错误,麻烦告之,谢谢谢谢!

<think>嗯,用户需要了解中望CAD的.NET二次开发API教程。首先需要确认中望CAD的官方文档位置。根据引用[1]提到的.NET CAD开发核心知识,技术深度很重要,所以应该先引导用户到官方资源。中望官网的开发者中心肯定是首要推荐,那里有完整的API参考和示例项目。 接下来考虑开发环境搭建。引用[3]提到不同CAD版本支持的.NET框架版本不同,这点很关键。需要提醒用户注意版本匹配,比如ZWCAD 2024可能要求.NET 4.7.2,而2025可能需要更高版本。VS的NuGet包管理器和项目模板能简化配置,应该具体说明操作步骤。 关于API结构,引用[2]详细解释了AutoCAD的对象层次结构,中望应该类似。Application作为根对象,Document和Database这些核心对象需要重点介绍。用户可能需要处理图形实体,比如直线、圆,或者访问图层、线型等非图形对象。引用[4]的块属性操作示例很有参考价值,可以举一反三到中望的BlockReference使用。 编程模式方面,事务处理(Transaction)是数据库操作的关键,这点在引用[4]的代码中体现得很清楚。中望同样采用这种机制,必须提醒用户任何对象修改都要在事务中完成。另外事件处理也很实用,比如响应文档打开或保存事件。 学习路径建议分步骤:从官方教程开始,再研究示例代码,最后动手调试。引用[1]强调保持好奇心,所以鼓励用户多尝试。常见问题如程序集加载失败,通常就是版本不匹配导致的,解决方法要具体列出。 最后扩展学习方向,性能优化和UI定制都是进阶重点。考虑到用户可能迁移自AutoCAD,需要提醒API差异点。引用[5]提到的DLL组织方式也适用于中望,不同功能分布在多个程序集中。 用户可能还会问:如何获取特定对象的属性?参考引用[4]的遍历属性方法,在中望里可以用类似AttributeCollection的方式。或者想知道调试技巧,那就说明Attach to Process的注意事项。API变化也是常见痛点,所以强调查看更新日志的重要性。</think>以下是为您整理的中望CAD .NET二次开发API使用教程指南,结合核心开发逻辑和最佳实践: --- ### **一、官方资源入口** 1. **中望开发者中心** 访问官网 [中望开发者平台](https://developer.zwcad.com/) → 选择“.NET API”板块 ✅ 包含: - API参考文档(对象模型树、方法详解) - GitHub示例仓库(含完整项目代码) - 版本兼容性列表(如ZWCAD 2024支持.NET Framework 4.7.2) --- ### **二、开发环境配置** ```bash # 推荐环境 Visual Studio 2022 + ZWCAD 2025 ``` 1. **引用关键DLL**(路径示例) ```csharp // 核心程序集 using ZWCAD.ApplicationServices; using ZWCAD.DatabaseServices; using ZWCAD.EditorInput; ``` 📌 添加引用:`ZWCADx.x.Interop.dll`, `ZWCADx.x.dbx.dll`(位于ZWCAD安装目录) 2. **NuGet包**(新版支持) ```bash Install-Package ZWCAD.NetSDK -Version 2025.1 ``` --- ### **三、核心API结构** ```mermaid graph TD A[Application] --> B[DocumentCollection] B --> C[Document] C --> D[Database] D --> E[BlockTable] E --> F[Entity 图形对象] D --> G[LayerTable 图层] D --> H[LinetypeTable 线型] ``` --- ### **四、入门代码示例** #### 1. **创建直线** ```csharp public void CreateLine() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // 创建从(0,0)到(100,100)的直线 Line line = new Line(new Point3d(0, 0, 0), new Point3d(100, 100, 0)); btr.AppendEntity(line); tr.AddNewlyCreatedDBObject(line, true); tr.Commit(); } } ``` #### 2. **获取块属性**(参考AutoCAD逻辑[^4]) ```csharp // 遍历块属性(中望API与AutoCAD高度兼容) foreach (ObjectId attId in blockRef.AttributeCollection) { AttributeReference attRef = tr.GetObject(attId, OpenMode.ForRead) as AttributeReference; ed.WriteMessage($"\n属性标签: {attRef.Tag} 值: {attRef.TextString}"); } ``` --- ### **五、调试与部署** 1. **调试配置** - VS调试属性 → 启动外部程序:`C:\Program Files\ZWSOFT\ZWCAD 2025\ZWCAD.exe` - 输出路径设为ZWCAD支持目录 2. **打包插件** 使用`.NET CLR`类库项目 → 编译为`.dll` → 通过`NETLOAD`命令加载 --- ### **六、学习路径建议** 1. **基础阶段** - 掌握`Database`事务机制(所有对象操作需在Transaction内完成) - 理解图形对象(Entity)的创建/修改流程 - 熟悉常用对象:`BlockTable`, `LayerTable`, `LinetypeTable` 2. **进阶方向** - 自定义实体(继承`Entity`类) - 事件监听(如`DocumentActivated`事件) - 界面集成(Ribbon菜单开发) --- ### **常见问题解决** | 问题现象 | 解决方案 | |-------------------------|------------------------------| | NETLOAD加载失败 | 检查.NET版本匹配性 | | 对象未提交事务 | 确认`tr.Commit()`已执行 | | 无法识别API命名空间 | 清理解决方案并重新引用DLL | --- ### **扩展学习资源** 1. [中望.NET API在线文档](https://developer.zwcad.com/net-api/) 2. GitHub示例库:[ZWCAD-.NET-Samples](https://github.com/ZWSOFT/ZWCAD-.NET-Samples) 3. **《中望CAD二次开发实战指南》**(官方出版 ISBN: 978-7-121-xxxxx) > 提示:中望API设计高度兼容AutoCAD .NET API[^2][^5],掌握AutoCAD开发知识可快速迁移。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值