sdk - Genexus Extensions SDK - 如何为 Genexus Server 开发扩展?
问题描述
我正在尝试为 Genexus Server 开发 .NET Framework Extensions 以监听基本事件,例如:
- 锁定事件
- 提交事件
- 更新事件
编辑
我已经尝试在文件夹中粘贴从 Genexus SDK派生AbstractPackage
和实现的包,并使用with收听,但该包没有被 Genexus Server 初始化。这个类来自.IGxPackageBL
GXServerInstance/VDir/BinGenexus/Packages
LockEvents
EventSubscription
ServerEvents.BeforeLockObject
Genexus.Server.Common.ddl
这是我到目前为止所尝试的:
我从“Genexus Package Visual Studio Template”创建了项目:
Package.cs
AssemblyInfo.cs
扩展程序没有被加载,这是https://mygxserver/v16/extensions.aspx
显示的内容:
该GXServer.log
文件没有记录任何错误,并显示扩展实际上已加载,尽管没有工作......
- 如何为 Genexus Server (16) 设置扩展?
- 我可以使用来自服务器的哪些 DLL 来为我的扩展实现功能?
解决方案
GeneXus 服务器扩展的开发方式与 GeneXus 扩展相同,并且必须安装在您提到的路径中。这里的区别是 GXserver 只加载BL 扩展。
您可以通过两种方式对扩展进行分类:
UI 扩展:这些扩展仅在 GeneXus IDE 中加载,可以添加用户界面组件,如工具窗口、工具栏、菜单、命令、编辑器等。
BL 扩展:只要加载业务逻辑层,就会加载这些扩展。也就是说,除了运行 GeneXus IDE 时,还包括运行 MSBuild 任务时,或者加载 GXserver 服务时。这些类型的扩展通常:
- 添加新的对象类型
- 向对象添加新部件
- 向对象添加新属性
- 实现 SDK 或其他共享程序集中定义的服务
为了使扩展被视为 BL 扩展,它必须符合以下条件:
类
Package
必须扩展AbstractPackage
和实现IGxPackageBL
。例如:public class Package : AbstractPackage, IGxPackageBL
我在提供的图像中注意到,
IGxPackageBL
缺少 的实现。除了已经从 继承的那些之外,该接口没有定义任何新的包成员AbstractPackage
,但包加载器无论如何都会检查它。通知
PackageAttribute
该包不是 UI 扩展。例如:[assembly : PackageAttribute(typeof(Package), IsUIPackage = false)]
进行这些更改并复制VDir\BinGenexus\Package
文件夹内的包程序集后,您可以在浏览器中导航到扩展页面(例如:https://mygxserver/v16/extensions.aspx),您应该会看到您的扩展已加载。
至于您可以使用的二进制文件,GXserver SDK 正在开发中。在 v17 中,我们开始分发一个名为 SDK 的新文件夹,BinServer
其中包含我们可以轻松制作为 SDK 一部分的二进制文件,目前包含 .contiansGenexus.Server.Common.dll
和GeneXus.Server.ExternalTool.dll
.
推荐阅读
- c++ - 为什么我们要在 CPP 中使用“类”而不是“结构”?举例说明
- javascript - vuepress 构建上的“未定义获取”
- php - str_replace 不适用于删除
- mysql - 连接到远程 MySQL 服务器
- microservices - 单片机到微服务
- angular - 通过 PKCE 实施安全地存储具有 OKTA Auth 代码流的 SPA 的客户端 ID
- javascript - 在一个表单中上传具有多个 Dropzone JS 的图像
- ios - Swift UDP NWListener 问题
- shell - 捕获“bmaptool”的进度百分比
- mysql - 从 mysql 表中查找唯一联系人