2016-10-27 15 views
0

Я разрабатываю расширение VS 2015, которое должно подключаться к VSTS (VisualStudio.com) и вытаскивать элементы журнала.Расширение VS не открывается в диалоговом окне входа

Код ниже работает в консольном приложении, но не в проекте VSIX. Я вызываю это из пункта меню в меню команды (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; 
} 

Я считаю, что проблема в том, что консольное приложение может вызывать экран знака без каких-либо проблем. Экспериментальный экземпляр VS 2015, где выполняется код VSIX, не работает. Мои исследования пока не указывают на что-либо полезное.

Есть ли подходящий способ подключения к VSTS из Visual Studio Extension? Что мне не хватает?

ответ

1

Измените код следующим образом:

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; 
     }