2016-10-27 9 views
0

VSTS (VisualStudio.com)에 연결하여 백 로그 항목을 꺼내야하는 VS 2015 확장 프로그램을 개발 중입니다.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; 
} 

나는 문제가 콘솔 응용 프로그램은 문제없이 로그인 화면을 호출 할 수 있음을 믿습니다. VSIX 코드가 실행되는 VS 2015 실험 인스턴스는 그렇지 않습니다. 지금까지의 내 연구는 유용하다고 지적하지 않습니다.

Visual Studio Extension에서 VSTS에 연결하는 적절한 방법이 있습니까? 내가 뭘 놓치고 있니?

답변

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