2017-09-11 5 views
0

J'ai le code suivantAPI TFS - comment s'assurer que Workspace.OwnerIdentifier n'est pas null?

var ws = vcs.GetWorkspace(wsName, vcs.AuthorizedUser); 

Cependant, ws.OwnerIdentifier est nulle à ce stade. Ce que je fais à côté pour obtenir la valeur est:

ws.Update(new UpdateWorkspaceParameters { Computer = ws.Computer }); 

Et puis ws.OwnerIdentifier n'est plus nulle.

Il doit y avoir un meilleur moyen d'obtenir ws.OwnerIdentifier dans mon scénario. Des idées?

Notre back-end est TFS 2017.

+0

Quelle version du SDK vous utilisez? Si vous n'utilisez pas cela, je l'essayerais d'abord: https://www.nuget.org/packages/Microsoft.TeamFoundationServer.ExtendedClient/ – DaveShaw

+0

TFS 2015, mais je ne suis peut-être pas en train d'utiliser les bonnes méthodes. – mark

Répondre

0

Je peux obtenir la valeur ws.OwnerIdentifier correctement avec le paquet NuGet Microsoft.TeamFoundationServer.ExtendedClient installé. Essayé avec la version 15.xxx et 14.xx, les deux ont travaillé.

Vous devez spécifier le wsName avec des guillemets: (See VersionControlServer.GetWorkspace Method (String, String))

var ws = vcs.GetWorkspace("wsName", vcs.AuthorizedUser); 

Ci-dessous échantillon pour votre référence:

using System; 
using Microsoft.TeamFoundation.VersionControl.Client; 
using Microsoft.TeamFoundation.Client; 

namespace _0912_GetWorkSpaceIdentifier 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string collection = @"http://server:8080/tfs/DefaultCollection"; 
      var tfsServer = new Uri(collection); 
      var tpc = new TfsTeamProjectCollection(tfsServer); 
      var vcs = tpc.GetService<VersionControlServer>(); 
      var ws = vcs.GetWorkspace("LC0706-2", vcs.AuthorizedUser); 
      var idf = ws.OwnerIdentifier; 

      Console.WriteLine(idf); 
     } 
    } 
} 

enter image description here

+0

C'est le même code que j'ai. Voulez-vous dire ExtendedClient présente la même API, mais une implémentation différente? – mark

+0

@mark Non, je viens de vérifier la méthode 'GetWorkspace' pour obtenir' ws.OwnerIdentifier', et la valeur n'est pas 'Null'. Normalement, il récupère la valeur une fois que vous spécifiez les conditions correctes pour la méthode si l'espace de travail existe. Donc, si vous obtenez toujours la valeur NULL, vous pouvez essayer le _ ** ExtendedClient ** _, car cela fonctionne pour moi avec le même code. Vous pouvez également essayer d'autres [surcharges] (https://msdn.microsoft.com/fr-fr/library/microsoft.teamfoundation.versioncontrol.client.versioncontrolserver.getworkspace%28v=vs.120%29.aspx?f=255&MSPPError = -2147217396) par exemple, 'GetWorkspace (String)' –