Je crée une application de console dans Visual Studio pour obtenir les détails de l'élément de travail à partir d'un projet Azure Devops. Je ne suis pas en mesure d'accéder au champ code> attribué code> d'un élément de travail.
J'ai essayé d'utiliser le code dans Microsoft Page pour interroger des éléments de travail avec quelques modifications et son affichage d'une exception lorsque j'essaie d'accéder au champ attribué code>. p>
static void Main(string[] args)
{
string _uri = "https://dev.azure.com/xyz";
string _personalAccessToken =
"xpdrix7nyspotj3l4gotvvk4cpp2z6l65g5r";
string _project = "FirstProject";
Uri uri = new Uri(_uri);
string personalAccessToken = _personalAccessToken;
string project = _project;
VssBasicCredential credentials = new VssBasicCredential("",
_personalAccessToken);
//create a wiql object and build our query
Wiql wiql = new Wiql()
{
Query = "Select *" +
"From WorkItems " +
"Where [System.TeamProject] = '" + project + "' " +
"Order By [State] Asc, [Changed Date] Desc"
};
//create instance of work item tracking http client
sing (WorkItemTrackingHttpClient workItemTrackingHttpClient =
new WorkItemTrackingHttpClient(uri, credentials))
{
//execute the query to get the list of work items in the results
WorkItemQueryResult workItemQueryResult =
workItemTrackingHttpClient.QueryByWiqlAsync(wiql).Result;
//some error handling
if (workItemQueryResult.WorkItems.Count() != 0)
{
//need to get the list of our work item id's and put them
//into an array
List<int> list = new List<int>();
foreach (var item in workItemQueryResult.WorkItems)
{
list.Add(item.Id);
}
int[] arr = list.ToArray();
//build a list of the fields we want to see
string[] fields = new string[3];
fields[0] = "System.Id";
fields[1] = "System.Title";
fields[2] = "System.AssignedTo";
WorkItemExpand workItemExpand = WorkItemExpand.All;
//get work items for the id's found in query
var workItems =
workItemTrackingHttpClient.GetWorkItemsAsync(arr, fields=null, workItemQueryResult.AsOf,workItemExpand).Result;
Console.WriteLine("Query Results: {0} items found", workItems.Count);
//loop though work items and write to console
foreach (var workItem in workItems)
{
Console.WriteLine("{0}{1}{2}", workItem.Id, workItem.Fields["System.Title"], workItem.Fields["System.AssignedTo"]);
}
}
}
}
}
3 Réponses :
C'est parce que lorsque vous obtenez les éléments de travail que vous spécifiez Vous devez simplement donner l'identifiant sans aucun paramètre supplémentaire: p> champs = null code>.
var workItems = workItemTrackingHttpClient.GetWorkItemsAsync(arr).Result;
Toujours la même exception et le code ci-dessus dans la question est capable d'imprimer d'autres champs si je retire le champ attribué au champ.
C'était le nouveau code:
vide statique principal (chaîne [] arg.
{ p>
Vérifiez si le champ Votre code est correct, sauf que je ne peux pas compiler system.collections.generic.keynotfoundexception code> sera jeté si le champ
attribué au champ code> n'est pas attribué. p>
attribué au champ code> est attribué dans l'élément de travail interrogé. p>
workitemquereryresult.workitemsul.orkitems.count () code>, je l'ai jeté à Ilist <>
((IList
Oui, l'exception est partie après que j'ai changé un élément de travail affecté au champ de non assigné. Mais je reçois une référence dans la sortie de la console au lieu du nom d'affichage ou que l'élément de travail est attribué. Je reçois Microsoft.Visualstudio.Services.webapi.ididentityRef
Vous devez la convertir en premier. Par exemple: Jobject Identity = Jobject.fromObject (Workitem.fields ["System.Assignedto"]); Console.writeline (identité ["displayName"]); code>
Merci, ça a fonctionné. Y a-t-il de toute façon que je puisse inclure le domaine attribué si les workitems ne sont pas affectés
Je crains que cela ne puisse être fait que dans le code. Le code ci-dessous est par exemple
workitem.fields.justergevalue ("system.assignedto", out objet identiquementojbect); if (identityojbect == null) {identityojbect = nouveau {displayName = "non assigné"}; } Identité jobject = jobject.fromObject (identityojbect); Console.writeline ("{0} {1} {2}", workitem.id, workitem.fields ["system.title], identité [" displayName "]); code>
Pouvez-vous masquer votre tapot, pas une bonne idée de la mettre en ligne avec tout le monde pour voir
C'est un chemin invalide.