首页 > 解决方案 > Genexus Extensions SDK - 如何为 Genexus Server 开发扩展?

问题描述

我正在尝试为 Genexus Server 开发 .NET Framework Extensions 以监听基本事件,例如:

编辑

我已经尝试在文件夹中粘贴从 Genexus SDK派生AbstractPackage和实现的包,并使用with收听,但该包没有被 Genexus Server 初始化。这个类来自.IGxPackageBLGXServerInstance/VDir/BinGenexus/PackagesLockEventsEventSubscriptionServerEvents.BeforeLockObjectGenexus.Server.Common.ddl

这是我到目前为止所尝试的:

我从“Genexus Package Visual Studio Template”创建了项目:

在此处输入图像描述

Package.cs

在此处输入图像描述

AssemblyInfo.cs

在此处输入图像描述

扩展程序没有被加载,这是https://mygxserver/v16/extensions.aspx显示的内容:

在此处输入图像描述

GXServer.log文件没有记录任何错误,并显示扩展实际上已加载,尽管没有工作......

在此处输入图像描述

标签: sdkgenexus

解决方案


GeneXus 服务器扩展的开发方式与 GeneXus 扩展相同,并且必须安装在您提到的路径中。这里的区别是 GXserver 只加载BL 扩展

您可以通过两种方式对扩展进行分类:

  1. UI 扩展:这些扩展仅在 GeneXus IDE 中加载,可以添加用户界面组件,如工具窗口、工具栏、菜单、命令、编辑器等。

  2. BL 扩展:只要加载业务逻辑层,就会加载这些扩展。也就是说,除了运行 GeneXus IDE 时,还包括运行 MSBuild 任务时,或者加载 GXserver 服务时。这些类型的扩展通常:

    • 添加新的对象类型
    • 向对象添加新部件
    • 向对象添加新属性
    • 实现 SDK 或其他共享程序集中定义的服务

为了使扩展被视为 BL 扩展,它必须符合以下条件:

  1. Package必须扩展AbstractPackage和实现IGxPackageBL。例如:

    public class Package : AbstractPackage, IGxPackageBL
    

    我在提供的图像中注意到,IGxPackageBL缺少 的实现。除了已经从 继承的那些之外,该接口没有定义任何新的包成员AbstractPackage,但包加载器无论如何都会检查它。

  2. 通知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.dllGeneXus.Server.ExternalTool.dll.


推荐阅读