Estoy tratando de encontrar una manera de agregar una rama como enlace en Azure DevOps a través de una aplicación que estoy construyendo (Básicamente solo esto, pero dentro de una aplicación de consola C #).
Me estoy familiarizando con los servicios de VisualStudio y las bibliotecas de TeamFoundation .NET y he intentado, como ejemplo, tomar un elemento de trabajo con uno de estos enlaces ya creados a través de la interfaz de usuario de DevOps y transferirlo a otro elemento de trabajo de la siguiente manera:
var workItemWithBranchLink = await _WorkItemTrackingHttpClient.GetWorkItemAsync(3985, expand: WorkItemExpand.Relations);
var workItemWithoutBranchLink = await _WorkItemTrackingHttpClient.GetWorkItemAsync(3988, expand: WorkItemExpand.Relations);
var document = new JsonPatchDocument();
document.Add(new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/relations",
Value = workItemWithBranchLink.Relations
});
await _WorkItemTrackingHttpClient.UpdateWorkItemAsync(document, (int)workItemWithoutBranchLink.Id);
Sin embargo, esto arroja una excepción
Microsoft.VisualStudio.Services.WebApi.Patch.PatchOperationFailedException: 'El parche de elemento de trabajo no admite parchear la propiedad de nivel superior en la ruta / relaciones.
Como workItemWithoutBranchLink.Relations
es nulo, no estoy seguro de qué otra forma podría parchearlo.
¿Alguna idea?
2 respuestas
Para los enlaces git, la sintaxis es un poco diferente, aquí hay un ejemplo de trabajo (para vincular la rama master
):
VssConnection testConnection = new VssConnection(new Uri("azure-devops-uri"), new Microsoft.VisualStudio.Services.Common.VssCredentials());
var workItemClient = testConnection.GetClient<WorkItemTrackingHttpClient>();
var gitClient = testConnection.GetClient<GitHttpClient>();
string projectId = "cf456145-abgd-ffs23-be61-0fca39681234";
string repositoryId = "d6856145-abgd-42a3-be61-0fca3968c555";
var branchUri = string.Format
(
"vstfs:///Git/Ref/{0}%2f{1}%2f{2}",
projectId,
repositoryId,
"GBmaster"
);
var json = new JsonPatchDocument();
json.Add(
new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/relations/-",
Value = new
{
rel = "ArtifactLink",
url = branchUri,
attributes = new
{
name = "Branch",
comment = "Comment"
}
}
});
try
{
int workItemToUpdate = 142144;
var update = workItemClient.UpdateWorkItemAsync(json, workItemToUpdate).Result;
}
catch (Exception e)
{
var error = e.Message;
}
Intenta actualizar tu ruta a "/relations/-"
. No estoy seguro de si el formato del parche en la biblioteca .net sigue el Rest API pero parece probable debido al mensaje de error de propiedad de nivel superior. es decir, si agrega un /-
ya no está en el nivel superior.
También parece ser el formato utilizado en este biblioteca de muestras.
Preguntas relacionadas
Nuevas preguntas
c#
C # (pronunciado "see sharp") es un lenguaje de programación multi-paradigma de alto nivel, estáticamente tipado desarrollado por Microsoft. El código C # generalmente se dirige a la familia de herramientas y tiempos de ejecución .NET de Microsoft, que incluyen .NET Framework, .NET Core y Xamarin, entre otros. Use esta etiqueta para preguntas sobre el código escrito en las especificaciones formales de C # o C #.