2009-07-02 5 views
2

私はTFSバグ追跡システム用のWebインターフェイスを実装しているため、お客様はログインしてバグを入力できます。ここでは、作成したVSTSチームプロジェクトのテンプレートタイプに従ってフィールドを追加します。たとえば、 'Agile'テンプレートを使用して作成されたチームプロジェクトは、他のテンプレートとは異なるフィールドセットを持っています。したがって、最初にチームプロジェクトのプロセステンプレートを特定する必要があります。TFS SDKを使用して既に作成されたチームプロジェクトのプロセステンプレートをプログラムで特定する方法はありますか?

しかし、 "Microsoft.TeamFoundation.WorkItemTracking.Client.Project"にはテンプレートタイプのフィールドがありません。どうすればチームプロジェクトのプロセステンプレートタイプを特定できますか?

答えて

0

は、私はあなたの質問への答えを知っているが、作るためにいくつかのポイントを持っていない:

  • を私はあなたが求めていることを明確にするためにあなたの質問を編集した程度Process Templates
  • 、私もあなたのことを明らかにVisual Studioプロジェクトファイルではなく、Team Projectsについて話しています。この2つの編集は、File-> Add New Projectを使用するときに表示されることを尋ねていると思わないようにする必要があります。

最後に、プロセステンプレートをカスタマイズできることを考慮する必要があります。テンプレート自体に関する情報が必要な場合を除き、テンプレートではなくフィールドセットを整理したい場合があります。

2

直接回答はGetProjectPropertiesです。

しかし、私はあなたが必要以上に困難な問題に取り組んでいる可能性があるとジョンに同意します。確かに、完全に汎用的なWITクライアントを書くことは難しいでしょう。ただし、標準のプロセステンプレートを使用する組織であっても、作業項目のカスタマイズは非常に一般的です。したがって、プロジェクト管理者がバグテンプレートを更新するたびに更新しない限り、おそらく一度限りの解決策は得られません。

何か理由がありますかWIWAはお役に立てませんか?

また、WIWAのようなお客様(あなたが社内スタッフではない)にご利用いただけるようなアプリケーションは、あなた自身で作成したものであってもTFS CALモデルに準拠した「外部コネクタライセンス」が必要です。

0

私は実際に次のコードを使用:

static void GetProjectTemplate() 
    { 
     string collectionName = "http://<our_host_name>:8080/tfs/defaultcollection/"; 
     TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(collectionName) 
      , new UICredentialsProvider()); 
     tfs.EnsureAuthenticated(); 
     ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService)); 
     string[] projects = { "proj1", "proj2", "proj3" }; 
     foreach (string proj in projects) 
     { 
      ProjectInfo projectInfo = css.GetProjectFromName(proj); 
      String projectName; 
      String prjState; 
      int templateId = 0; 
      ProjectProperty[] projectProperties; 


      css.GetProjectProperties(
       projectInfo.Uri, out projectName, out prjState, out templateId, out projectProperties); 
      Console.WriteLine(templateId); 
     } 

     // Locate templateId in the list of Process templates 
     IProcessTemplates processTemplates = (IProcessTemplates)tfs.GetService(typeof(IProcessTemplates)); 
     XmlNode node = processTemplates.GetTemplateNames(); 
     Console.WriteLine(Regex.Replace(node.InnerXml,"<[A-Za-z]","\n$&", RegexOptions.ECMAScript)); 

    } 

...ここからコピーして変更:http://www.databaseforum.info/30/1083827.aspx

問題は、私はまだ取得 '-1' テンプレートIDとして、です。これは、プロジェクトがテンプレートなしで作成されたことを意味しますか?また、上記のプロジェクトとホスト名をここで変更しました。 (彼らは正当なプロジェクトです)。

0

の代わりに:

Console.WriteLine(templateId); 

使用:

Console.WriteLine(projectProperties[2].Value); 
関連する問題