La documentazione MSDN in merito al metodo QueryLabels della classe VersionControlServer mi sembra poco chiara. In particolare esistono 3 overloads del metodo:
public
VersionControlLabel[] QueryLabels(string labelName, string labelScope, string owner, bool includeItems);
public
VersionControlLabel[] QueryLabels(string labelName, string labelScope, string owner, bool includeItems, string filterItem, VersionSpec versionFilterItem);
public
VersionControlLabel[] QueryLabels(string labelName, string labelScope, string owner, bool includeItems, string filterItem, VersionSpec versionFilterItem, bool includeDownloadInfo);
I parametri sono in parte comuni, ma secondo me poco chiari:
labelName: Nome della label cercata, se sconosciuta indicare null.
labelScope: Il teamproject a cui é applicata la label. Potete anche indicare un folder del versioncontrol, ma verrà tenuto conto solo del team project, null se sconosciuto
owner: Utente proprietario dell'etichetta, null se sconosciuto.
includeItems: Se true carica da subito anche i riferimenti agli item che sono etichettati cone le etichette trovate.
filterItem: Un item (uno solo, no wildcards) che deve essere etichettato dale etichette cercate. Se cercate le etichette che sono applicate su (anche su) un certo file mettelo come filterItem. Null se non vi interessa (ma a questo punto vi conveniva un altro overload).
versionFilterItem: La versione del filterItem che deve essere inclusa. Non sono presenti una versione iniziale e una finale perché questo argomento dovrebbe eliminare possibili ambiguità dovuti a rename. In realtà questo argomento non funziona come ci si aspetta:
1: da eccezione se passate null (mentre dovrebbe cercare in tutte le versioni)
2: pare che se passate una qualsiasi versione cerchi comunque in tutte le versioni
3: passate VersionSpec.Latest per cercare in tutte le versioni
includeDownloadInfo: Se true vengono incluse delle informazioni che servono a scaricare il file