在 C# 中使用 API 创建 TFS 配置策略

Posted

技术标签:

【中文标题】在 C# 中使用 API 创建 TFS 配置策略【英文标题】:TFS configuration policy creation using API in C# 【发布时间】:2020-02-14 07:03:49 【问题描述】:

我正在尝试使用 Microsoft.TeamFoundation.Policy.WebApi 库创建新的分支策略。 我的代码是:

变量信息:

json - 包含策略配置中的设置 connection - 是到我们的 TFS 服务器的 VSSConnection TFSProject - 是 TFS 中的项目名称 我得到的错误在我的搜索中没有显示任何内容,我将不胜感激有关如何在 TFS 中创建新策略的一些示例

代码:

var json = "\"statusName\": \"" + StatusNameForBlock + "\",\"statusGenre\": \"ci\",\"authorId\": null,\"invalidateOnSourceUpdate\": false,\"policyApplicability\": null,\"scope\": [\"refName\": \"refs/heads/master\",\"matchKind\": \"Exact\"]";
            JObject jToken = new JObject(JObject.Parse(json));
            var newPolicy = new PolicyConfiguration();
            var policyType = new PolicyTypeRef();
            policyType.Id = Guid.NewGuid();
            newPolicy.Type = policyType;
            newPolicy.Settings = jToken;

            var gitPolicyHttpClient = connection.GetClient<PolicyHttpClient>();
            var policyCreated = gitPolicyHttpClient.CreatePolicyConfigurationAsync(newPolicy, TFSProject).Result;

异常:VssServiceException:ID 为“98813712-70a4-4937-b139-9a3654c9795f”的类型不存在

【问题讨论】:

【参考方案1】:

您可以使用 Rest API 创建新的分支策略。

POST https://instance/collection/project/_apis/policy/configurations/configurationId?api-version=5.0

使用这些 API 为您的项目定义政策。配置将类型(例如“必需的审阅者”)与特定设置相关联,例如“对于带有名为 *.dll 的文件的拉取请求,该文件针对 xxx Git 存储库中的主分支,请将源代码控制二进制文件团队添加为必需的审阅者” .

Policy Examples 供您参考。

更多详情,你也可以看看这个博客--Configuring standard policies for all repositories in Azure Repos

【讨论】:

这不是最佳做法。我解决了我的问题,将尽快发布答案。 @OriWiesel 自己修复总是更好;正如您所了解的那样!:) 请随时在此处分享您的解决方案,然后将您的回复标记为答案,这也将有助于社区中的其他人。

以上是关于在 C# 中使用 API 创建 TFS 配置策略的主要内容,如果未能解决你的问题,请参考以下文章

通过 SQL Server 存储过程调用 Team Foundation Server(TFS) API

通过 TFS REST API 将工作项添加到板列

TFS 策略 - 当代码不符合自定义准则时阻止签入

C# Net Core:在 API 中启用 Cors 后,仍处于 CORS 策略阻止状态

在 TFS 中为某些用户注册自定义签入策略

VssResourceNotFoundException:API 资源位置 <GUID> 未在 tfs url 上注册 - c#