You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Genexus Extensions SDK如何通过代码管理KB团队开发相关功能

Genexus SDK调用团队开发模块相关问题

待实现功能

  • 获取Genexus Server上托管的KB原始名称,而非本地下载KB时自定义的名称
  • 获取Changeset信息
  • 触发Changeset的Commit操作
  • 对当前KB触发Full Update操作

已排查情况

已在Genexus 16安装目录的./Packages文件夹下找到Artech.Packages.TeamDevClient相关DLL,该类库未包含在官方SDK安装包中,不确定是否可直接使用。

核心疑问

  • SDK环境下是否可以获取Genexus团队开发模块的相关信息,包括变更集、Genexus Server端KB名称等内容?
  • 是否可以通过SDK触发提交、更新、锁定这类Genexus Server相关操作?
  • 如何通过编程方式正确设置、获取Genexus Server的连接凭证配置?
  • 调用Artech.Architecture.Common.Services.TeamDevData.Client命名空间下的TeamDevelopmentData类,传入当前工作模型后所有属性返回null,该类的正确使用方式是什么?

问题解答

1. 团队开发相关DLL的使用说明

你找到的Artech.Packages.TeamDevClient系列DLL属于Genexus官方团队开发模块的内部依赖,虽然没有打包到独立SDK安装包中,但只要你使用的DLL版本和目标Genexus IDE版本完全一致,就可以正常引用调用,不需要额外授权。注意不要跨大版本调用(比如用Genexus 17的DLL给Genexus 16的SDK项目用),否则会出现兼容性异常。

2. 核心功能实现方案

你提到的所有需求都可以通过调用上述类库实现,具体逻辑如下:

(1)Genexus Server连接凭证配置

不需要手动构造凭证配置,只要当前KB已经在IDE中完成过Genexus Server的绑定和登录,凭证会自动存储在本地配置中,调用API时会自动读取。如果需要程序化配置,可使用Artech.Packages.TeamDevClient.Configuration.TeamDevConfiguration类的GetServerConnection方法获取现有连接,或SetServerConnection方法写入新的连接配置。

(2)TeamDevelopmentData返回空的问题修复

你实例化该类的方式有误,该类本身只是数据容器,不会主动拉取服务端数据,需要先调用Load()方法完成数据加载,正确代码示例如下:

using Artech.Architecture.Common.Services.TeamDevData.Client;
using Artech.Packages.TeamDevClient.API;

// 先获取当前KB的团队开发服务实例
var teamDevService = TeamDevService.GetForModel(UIServices.KB.CurrentModel);
if (teamDevService == null || !teamDevService.IsConnected)
{
    CommonServices.Output.AddLine("当前KB未绑定Genexus Server或未连接");
    return;
}

// 加载团队开发数据
TeamDevelopmentData teamDevData = new TeamDevelopmentData(UIServices.KB.CurrentModel);
teamDevData.Load(); // 必须调用Load方法才会拉取服务端和本地的团队开发数据

// 输出属性
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(teamDevData))
{
    string name = descriptor.Name;
    object value = descriptor.GetValue(teamDevData);
    CommonServices.Output.AddLine($"{name} = {value ?? "null"}");
}
(3)各需求的具体实现方法
  • 获取服务端KB原始名称:加载完成后直接读取teamDevData.ServerKBName属性即可,该属性就是Genexus Server上托管的原始KB名称,和本地自定义名称无关。
  • 获取Changeset信息:通过teamDevService.ChangesetService.GetPendingChanges()方法获取本地待提交变更集,调用teamDevService.ChangesetService.GetHistory(int topCount)可以获取历史提交记录。
  • 触发Commit操作:构造CommitOptions对象,传入待提交的变更项、提交注释,调用teamDevService.ChangesetService.Commit(CommitOptions options)即可完成提交。
  • 触发Full Update操作:调用teamDevService.UpdateService.FullUpdate()方法即可,该方法和IDE中点击「完整更新」的执行逻辑完全一致。
  • 锁定/解锁对象:调用teamDevService.LockService.LockObjects()和teamDevService.LockService.UnlockObjects()方法即可实现对象的锁定和解锁操作。

内容的提问来源于stack exchange,提问作者Bruno.S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:45:08