947295340 发表于 2018-11-30 14:22

[SDK] Native.SDK --最贴近酷Q的 C# SDK (支持 酷Q on Docker)

本帖最后由 947295340 于 2019-6-23 15:44 编辑

Native.SDK 优点介绍

[*]程序集脱库打包
[*]类UWP开发体验
[*]完美翻译酷QApi
[*]支持酷Q应用打包
[*]支持附加进程调试
[*]支持 酷Q on Docker (https://cqp.cc/t/42164, 感谢 @成音S )

Native.SDK 项目结构
https://github.com/Jie2GG/Image/raw/master/NativeSDK(0).png?raw=true

Native.SDK 开发环境

[*]Visual Studio 2012 或更高版本
[*]Microsoft .Net Framework 4.0 (XP系统支持的最后一个版本)

Native.SDK 部署流程

[*]下载并打开 Native.SDK
[*]打开 Native.Csharp 项目属性, 修改 "应用程序" 中的 "程序集名称" 为你的AppId (参见 http://d.cqp.me/Pro/开发/基础信息)
[*]展开 Native.Csharp 项目, 修改 "Native.Csharp.json" 文件名为你的AppId
[*]展开 Native.Csharp 项目, 找到 App -> Core -> LibExport.tt 文件, 右击选择 "运行自定义工具"
此时 Native.SDK 的开发环境已经配置成功!
要找到生成的 程序集, 请找 Native.Csharp -> bin -> x86 -> (Debug\Release)
Native.SDK 调试流程

[*] 打开 酷Q Air/Pro, 并且登录机器人账号
[*]打开 Native.Csharp 项目, 修改 "生成" 中的 "输出路径" 为酷Q "dev" 路径
[*]重新生成 Native.Csharp 项目
[*]在酷Q上使用 "重载应用" 功能, 重载所有应用
[*]依次选择VS的菜单项: "调试" -> "附加到进程"
[*]选择 CQA.exe/CQP.exe 的托管进程, 选择附加
[*]附加成功后进入调试模式, 即可进行断点 (注: 仅在只加载一个 .Net 应用的酷Q可以进行调试)


Native.SDK 下载地址       支持我, 给我的项目一个星标

[*][正式版, .Net 4.0]: https://github.com/Jie2GG/Native.Csharp.Frame/releases (已归档)
[*][正式版, .Net 4.5]: https://github.com/Jie2GG/Native.Csharp.Frame/tree/Final
[*][扣扣群]: 711841640
[*][帮助文档]: 请进入群获取

Native.SDK 更新日志 (查看详细更新日志请关注 Github 的 README.md)

[*]2019年06月23日 版本: 3.1.2.0623
1. 修复 CqApi.ReceiveRecord 传递格式不正确的问题


[*]2019年06月19日 版本: 3.1.1.0619
1. 优化 Native.Csharp.Sdk 项目对 酷Q on Docker(Wine) 的兼容性
2. 优化 Native.Csharp.Tool 项目对 酷Q on Docker(Wine) 的兼容性
3. 优化 Native.Csharp.Repair 的兼容性 感谢 @成音s
4. 修复 OtherExpand.ToDateTime 方法转换时间出错
5. 修复 CqApi.GetMemberList 方法获取数据时运算出错


[*]2019年06月15日 版本: 3.1.0.0615
1. 新增 MenuExport.tt 模板, 用于解析项目 Json 文件中的回调函数
2. 新增 StatusExport.tt 模板, 用于解析项目 Json 文件中的回调函数
3. 重写 LibExport.tt 模板, 用于解析项目 Json 文件中的回调函数
4. 重写 Interface 中的接口, 分离所有事件为单独接口
5. 重写 Model 中的所有模型, 更改为 EventArgs , 并重写所有事件
6. 优化 为 Common.cs 增加 App名称 (酷Q应用列表显示的名称)
7. 优化 为 Common.cs 增加 App版本 (酷Q应用列表显示的版本)
8. 优化 为所有事件参数类增加 Json 文件对应的 Id, Name, Type 参数
9. 优化 预置 Json 解析 nuget 包 (tt 模板关键组件, 请勿删除)
10. 优化 调整了 IOC 容器的注册方式
11. 优化 调整了 IOC 容器的实例化方式
12. 修复 一些零碎的已知问题


[*]2019年06月07日 版本: 3.0.7.0607
由于 酷Q 停止对 Windows XP/Vista 系统的支持, 所以 Native.SDK 将停止继续使用 .Net 4.0
并将此版本作为最终发布版归档处理, 下个版本开始仅对 .Net 4.5+ 更新

1. 修复 悬浮窗数据转换错误 (由 Pack -> BinaryWriter)
2. 优化 部分 Api 接口的数据处理效率 (由 UnPack -> BinaryReader)
3. 优化 分离 Native.Csharp.Tool 项目, 使 SDK 更轻量
4. 优化 调整 Native.Csharp.Tool 项目结构, 每个模块为一个根文件夹. 排除即可在编译时移除功能
5. 优化 新增 HttpTool (位于 Native.Csharp.Tool.Http)
6. 新增 SQLite 操作类 (不包含EF, 需要可自行添加), 完全移植自 System.Data.SQLite (.Net 4.0)

[*]2019年05月04日 版本: 3.0.0.0504
说明: 由于酷Q改动了应用机制, 因此升级时请务必保存代码, 进行代码迁移升级!
注意: 本次升级相对于之前的版本应用间不兼容做出了修改, 但是其机制导致了与旧版不兼容, 请酌情升级!

1. 修复 CqApi.AddFatalError 方法传递错误时可能引发酷Q堆栈错误
2. 修复 AppDomain.UnhandledException 全局异常捕获失效, 现在支持定位到方法
3. 优化 AppDemain.UnhandledException 全局异常捕获解析方式
4. 优化 项目版本号, 统一为项目新增当前版本号以区分
5. 优化 项目事件模型, 抽象 EventArgsBase 类作为公共抽象类
6. 优化 CqMsg 类, 完善 CqCodeType 枚举
7. 优化 CqMsg 类, 更改 CqCode.Content 为字典, 而非键值对集合
8. 优化 调试机制, 根据 酷Q 应用机制变动而转变为附加调试
9. 优化 IOC容器的注册方式
10.新增 Native.Csharp.Repair 组件, 改组件为原 (@成音S) 大佬的 .Net 兼容组件
11.移除 Event_AppMain.Initialize 方法, 保证应用加载效率

[*]2019年04月06日 版本: 2.7.2
1. 优化 Native.Csharp.Sdk 项目的结构, 修改类: CqApi 的命名空间
2. 新增 消息解析类: CqMsg (使用方法还请参照 Github 的 README.md 中的更新日志)

[*]2019年03月03日 版本: 2.7.0
本次更新于响应 "酷Q" 官方 "易语言 SDK" 的迭代更新

1. 新增 CqApi.ReceiveImage (用于获取消息中 "图片" 的绝对路径)
2. 新增 CqApi.GetSendRecordSupport (用于获取 "是否支持发送语音", 即用于区别 Air 和 Pro 版本之间的区别)
3. 新增 CqApi.GetSendImageSupport (用于获取 "是否支持发送图片", 即用于区别 Air 和 Pro 版本指间的区别)
4. 优化 CqApi.ReceiveRecord 方法, 使其获取到的语音路径为绝对路径, 而非相对路径

[*]2019年02月20日 版本: 2.6.2
1. 更新 Native.Chsarp 项目的部分注释
2. 新增 Event_AppMain.Initialize 方法, 位于 "Native.Csharp.App.Event" 下, 用于当作本项目的初始化方法
3. 优化 Event_AppMain.Resolvebackcall 方法的执行, 默认将依据接口注入的类型全部实例化并取出分发到事件上

[*]2019年01月26日 版本: 2.6.0
说明: 此次更新重构了 Native.Csharp 项目, 全面采用依赖注入框架, 提升 SDK 可扩展性、可移植性
注意: 此次更新核心代码重构, 开发者若要升级请备份好代码后升级.

1. 新增 Unity 依赖注入框架, 提升 SDK 可扩展性,、可移植性
2. 新增 LibExport 文件模板, 使用方式: 右击 "LibExport.tt" -> 运行自定义工具
3. 新增 AppID 半自动填写 (运行 LibExport 模板即可生成)
4. 新增 Event_AppMain 类, 改类主要用于注册回调和分发事件
5. 新增 IEvent_AppStatus 接口, 用于实现 "酷Q事件"
6. 新增 IEvent_DiscussMessage 接口, 用于实现 "讨论组事件"
7. 新增 IEvent_FriendMessage 接口, 用于实现 "好友事件"
8. 新增 IEvent_GroupMessage 接口, 用于实现 "群事件"
9. 新增 IEvent_OtherMessage 接口, 用于实现 "其它事件"
10. 新增 Ievent_UserExpand 接口, 用于事件开发者自定义的事件
11. 修复 LibExport 中 "EventSystemGroupMemberDecrease" 事件传递的 FormQQ 不正确的问题
12. 优化 Model.GroupMessageEventArgs, 在其中添加 IsAnonymousMsg 的变量用于判断消息是否属于匿名消息
13. 优化 对公共语言的支持
14. 优化 对于原有不合理的事件分类进行重新整合.

[*]2019年01月23日 版本: V2.4.2
现在 SDK 已经趋于稳定, 在长期压力测试的情况下能够不崩溃. 现主要修复一些其它的bug, 若您有好的建议或者更好的想法, 欢迎进入群与我们交流!

1. 新增 IniObject.Load() 方法在加载了文件之后保持文件路径, 修改结束后可直接 Save() 不传路径参数保存
2. 修复 IniObject.ToString() 方法的在转换 IniValue 时可能出错
3. 补充 IniSection.ToString() 方法, 可以直接把当前实例转换为字符串, 可以直接被 IniObject.Parse() 解析
4. 针对之后要推出的 Ini 配置项 序列化与反序列化问题做出优化

[*]2019年01月20日 版本: V2.3.6
1. 修复 IniObject 类针对解析过程中, 遇到 Value 中包含 "=", 从而导致匹配到的 Key 和 Value 不正确的问题

[*]2019年01月19日 版本: V2.3.5
1. 新增 HttpWebClient 类针对 .Net Framework 4.0 的 https 的完整验证协议 感谢 @ycxYI

[*]2019年01月14日 版本: V2.3.4
1. 修改 导出给酷Q的回调函数, 消息参数类型为 IntPtr
2. 修复 获取 酷Q GB18030 字符串, 转码异常的问题
3. 修改 IniObject 类的继承类由 List<T> 转换为 Dictionary<TKey, TValue>
4. 新增 IniObject 类的 string 类型索引器
5. 新增 IniObject 类的 Add(IniSection) 方法, 默认以 IniSection.Name 作为键
6. 新增 IniObject 类的 ToArray() 方法, 将返回一个 IniSection[]
7. 重载 IniObject 类的 Add(string, IniSection) 方法, 无效化 string 参数, 默认以 IniSection.Name 作为键

[*]2019年01月14日 版本: V2.3.3
1. 还原 酷Q消息回调部分的导出函数的字符串指针 IntPtr -> String 类型, 修复此问题导致 酷Q 直接闪退

[*]2019年01月11日 版本: V2.3.2
1. 修复 传递给 酷Q 的消息编码不正确导致的许多文字在 QQ 无法正常显示的问题 感谢 @gjf8512 , @kotoneme
2. 修复 酷Q 传递给 SDK 的消息由于编码不正确可能导致的开发问题 感谢 @gjf8512 ,@kotoneme

[*]2019年01月08日 版本: V2.3.1
1. 修改 "nameof ()" 方法调用替换为其结果等效的字符串, 修复 VS2012, VS2013 编译失败的问题

[*]2018年12月29日 版本: V2.3.0
说明: 此次更新改动较大, 请开发者在升级时备份好之前的代码!!!

1. 分离了 Sdk.Cqp 为单独一个项目, 提升可移植性
2. 修改 Native.Csharp.Sdk.Cqp.Api 中的 "EnApi" 的类名称为 "CqApi"
3. 修改 "CqApi" 对象的构造方式, 由 "单例对象" 换为 "实例对象"
4. 新增 "IniObject", "IniSection", "IniValue" , 位于 Native.Csharp.Tool.IniConfig.Linq (专门用于 Ini 配置项的类, 此类已完全面向对象)
5. 弃用 Native.Csharp.Tool 中的 "IniFile" 类, (该类还能使用但是不再提供后续更新)

[*]2018年12月13日 版本: V2.1.0
1. 修复 DllExport 可能编译出失效的问题
2. 修复 异常处理 在try后依旧会向酷Q报告当前代码错误的问题
3. 修复 异常处理 返回消息格式错误
4. 修复 WPF窗体 多次加载会导致酷Q奔溃的问题
5. 修复 "有效时间" 转换不正确 感谢 @BackRunner
5. 分离 Sdk.Cqp.Tool -> Native.Csharp.Tool 提升代码可移植性

[*]2018年12月07日 版本: V2.0.1
1. 修复 获取群列表永远为 null 感谢 @kotoneme
2. 修复 非简体中文系统下获取的字符串为乱码问题 感谢 @kotoneme

[*]2018年12月06日 版本: V2.0.0
1. 重构 插件框架代码
2. 修复 多插件同时运行时 "AuthCode" 发生串应用问题
3. 优化 代码编译流程, 减少资源文件合并次数, 提升代码编译速率
4. 优化 插件开发流程
5. 新增 酷Q插件调试功能, 同时支持 Air/Pro 版本

[*]2018年12月05日 版本: V1.1.1
1. 尝试修复多应用由于 "AuthCode" 内存地址重复的问题导致调用API时会串应用的问题
2. 优化SDK加载速度

[*]2018年12月05日 版本: V1.1.0
1. 由于酷Q废弃了消息接收事件中的 "font" 参数, SDK已经将其移除
2. 修复 HttpHelper 类 "GetData" 方法中抛出异常
3. 新增 HttpWebClient 类
4. 新增 PUT, DELETE 请求方式
5. 新增 在任何请求方式下 Cookies 提交, 回传, 自动合并更新
6. 新增 在任何请求方式下 Headers 提交, 回传
7. 新增 在任何请求方式下可以传入用于代理请求的 WebProxy 对象
8. 新增 在任何请求方式下可以控制是否跟随响应 HTTP 服务器的重定向请求, 以及应和重定向次数
9. 新增 可控制 "POST" 请求方式下的 "Content-Type" 标头的控制, 达到最大兼容性

[*]2018年11月30日 版本: V1.0.0
1. 打包上传项目

果汁哟 发表于 2018-11-30 14:39

一楼仰慕dalao。

成音S 发表于 2018-11-30 14:58

本帖最后由 成音S 于 2018-11-30 15:49 编辑

酷Q Api真的很全,而且有用到Fody/Costura打包,一个dll就完成了
操作处理很友善,支持
有一个问题是Native.Demo.App.Core.AppInfo() 需要自己修改?

没看明白为什么修改Native.Demo.App.Event.AppInfo()...e.AppId
会使到Native.Demo.App.Core.AppInfo() return 的AppInfo 修改到

还有缺少撤回消息

947295340 发表于 2018-11-30 15:24

成音S 发表于 2018-11-30 14:58
酷Q Api真的很全,而且有用到Fody/Costura打包,一个dll就完成了
操作处理很友善,支持
有一个问题是Native.De ...

修改方法里的 e.AppId

CoolQ 发表于 2018-11-30 15:56

非常感谢开发 SDK,酷Q事件中的 font 参数已经弃用,可以不用解析了

Eric_Lian 发表于 2018-12-1 16:41

先赞一个。

MikuAlpha 发表于 2018-12-1 18:12

666666,有空用用

zzi 发表于 2018-12-1 22:06

太谢谢了,先下载下来学习下,还不会用呢

天命丶冰 发表于 2018-12-3 14:19

有没有qq群.准备用这个sdk试一下

笨蛋雪 发表于 2018-12-3 14:27

创建个群方便开发者交流?

947295340 发表于 2018-12-3 15:05

笨蛋雪 发表于 2018-12-3 14:27
创建个群方便开发者交流?

群: 711841640

蚂蚁书屋 发表于 1-6 17:43

萌新前来报道

蚂蚁书屋 发表于 1-6 18:02

请问APPID怎么获取呢

gjf8512 发表于 1-9 11:36

酷Q传递的消息都是gb18030编码的,建议处理一下?

947295340 发表于 1-9 15:23

gjf8512 发表于 2019-1-9 11:36
酷Q传递的消息都是gb18030编码的,建议处理一下?

该问题已经在新版本处理过了, 请备份代码并迁移至最新版本的SDK保证您的应用稳定运行!

704394789 发表于 1-10 14:12

支持一下 没事的时候自己也试试开发一个插件玩玩

高等数学上册 发表于 1-14 11:29

围观大佬

孤仙 发表于 2-28 16:56

顶一个,在那个cp

゛.凋零︷メ 发表于 3-14 23:29

完全按照操作步骤做了一遍,文件也编译在了app目录,但是酷Q似乎根本不会去加载这个插件的dll文件。
麻烦作者看看是否使用说明是否有缺漏。

947295340 发表于 3-19 00:54

゛.凋零︷メ 发表于 2019-3-14 23:29
完全按照操作步骤做了一遍,文件也编译在了app目录,但是酷Q似乎根本不会去加载这个插件的dll文件。
麻烦作 ...

麻烦进一下交流群,反馈一下问题的明细
页: [1] 2
查看完整版本: [SDK] Native.SDK --最贴近酷Q的 C# SDK (支持 酷Q on Docker)