2016-10-27 12 views
0

Ich entwickle eine VS 2015-Erweiterung, die mit VSTS (VisualStudio.com) verbinden und Backlog-Elemente abrufen sollte.VS Extension nicht Pop-up-Anmeldung Dialogfeld

Der folgende Code funktioniert in einer Konsolenanwendung, aber nicht im VSIX-Projekt. Ich rufe es von einem Menüpunkt im Team-Menü (IDM_MENU_TEAM_FOUNDATION_CLIENT).

using Microsoft.VisualStudio.Services.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.WebApi; 
using Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models; 
... 
public WorkItem GetItems(int itemId) { 
    var myCredentials = new VssClientCredentials(); 
    var vstsConnection = new VssConnection(new Uri(@"https://myaccount.visualstudio.com/"), myCredentials); 
    var vstsClient = vstsConnection.GetClient<WorkItemTrackingHttpClient>(); 
    var workItem = vstsClient.GetWorkItemAsync(itemId).Result; 

    return workItem; 
} 

Ich glaube, das Problem ist, dass die Konsole App den Anmeldebildschirm ohne Probleme aufrufen kann. Die VS 2015-Experimentalinstanz, in der der VSIX-Code ausgeführt wird, tut dies nicht. Meine bisherigen Forschungen zeigen nichts Nützliches.

Gibt es eine ordnungsgemäße Verbindung von Visual Studio Extension mit VSTS? Was vermisse ich?

Antwort

1

Ändern Sie den Code wie folgt aus:

private void GetWorkItem(object sender, EventArgs e) 
     { 
      System.Threading.Tasks.Task.Factory.StartNew(() => 
      { 
       var w = GetItems(123); 
       MessageBox.Show(w.Url); 
      }); 

     } 

public WorkItem GetItems(int itemId) 
     { 
      var myCredentials = new VssClientCredentials(); 
      var vstsConnection = new VssConnection(new Uri(@"https://xxx.visualstudio.com/"), myCredentials); 
      var vstsClient = vstsConnection.GetClient<WorkItemTrackingHttpClient>(); 
      var workItem = vstsClient.GetWorkItemAsync(itemId).Result; 

      return workItem; 
     } 
Verwandte Themen