TFS SDK - 将工作项与按 ID 签入相关联

TFS SDK - Associate work item with checkin by id

我正在使用 TFS SDK (Microsoft.TeamFoundationServer.ExtendedClient)。 我有一个工作项 ID 列表 (workItemsToAssociate),我正在进行签入,关联这些工作项:

var workItemStore = tfs.GetService<WorkItemStore>();
var associatedWorkItems = workItemsToAssociate?.Select(workItemId => new WorkItemCheckinInfo(workItemStore.GetWorkItem(workItemId), WorkItemCheckinAction.Associate)).ToArray();
var wip = new WorkspaceCheckInParameters(changes, comment) {
    AssociatedWorkItems = associatedWorkItems
}
workspace.CheckIn(wip);

但是我遇到了 Microsoft 原生 dll 的问题。WITDataStore32.dll(Microsoft.TeamFoundation.WorkItemTracking.Client 的一部分),因为它没有进入我的 bin 文件夹(我找到的唯一常见解决方案是手动放置)。

上面的代码位于 LRT.SourceRepositoryProviders 项目中,该项目被应用程序启动的 LRT.Console 项目引用。构建本机 dll Microsoft.WITDataStore32.dll 后出现在 LRT.SourceRepositoryProviders bin 文件夹中,但我必须手动将其放入 LRT.Console bin 文件夹中。

1) 有没有一种方法可以在不使用 WorkItemStore 的情况下实现我想要的功能? WorkItemCheckinInfo 需要一个 WorkItem 对象,但我希望我可以将 ID 列表传递给签入。

2) 如何配置解决方案,以便本机库 Microsoft.WITDataStore32.dll 将正确放置在所有 bin 文件夹中?

我们必须使用 WorkItemStore 来获取工作项信息。

关于How to checkin source code with work item associated using TFS API.

还有一个示例供您参考

Microsoft.WITDataStore*.dll 是 ExtendedClient 包的一部分,它们是本机 dll,不能在托管项目中引用。您需要手动将 dll 复制到您的 bin 文件夹中以进行运行时解析。

您可以尝试将dll添加到解决方案的启动项目(LRT.SourceRepositoryProviders项目)中。