2

TFS バグ追跡システム用の Web インターフェイスを実装しているので、顧客はログインしてバグを入力できます。ここでは、作成した VSTS チーム プロジェクトのテンプレート タイプに従ってフィールドを追加します。たとえば、「アジャイル」テンプレートを使用して作成されたチーム プロジェクトには、他のテンプレートとは異なるフィールド セットがあります。そのため、最初にチーム プロジェクトのプロセス テンプレートを特定したいと考えています。

ただし、「Microsoft.TeamFoundation.WorkItemTracking.Client.Project」にはテンプレート タイプのフィールドが含まれていません。では、チーム プロジェクトのプロセス テンプレートの種類を特定するにはどうすればよいでしょうか。

4

4 に答える 4

2

直接的な答えは、GetProjectPropertiesを呼び出すことです。

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

WIWAが機能しない理由はありますか? (ダウンロード リンクは無効になっていることに注意してください。現在は、より広範な TSWA SP1 リリースの一部になっています。)

また、顧客 (内部スタッフではなく) が利用できるアプリケーションは、WIWA であろうと自分で作成したものであろうと、TFS CAL モデルに従って「外部コネクタ ライセンス」が必要であることにも注意してください。

于 2009-07-02T23:29:21.730 に答える
0

それ以外の:

Console.WriteLine(templateId);

使用する:

Console.WriteLine(projectProperties[2].Value);
于 2014-11-28T07:18:54.087 に答える
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

問題は、テンプレート ID として「-1」を取得していることです。これは、プロジェクトがテンプレートなしで作成されたということですか? また、ここに投稿するために上記のプロジェクトとホスト名を変更しました。(それらは正当なプロジェクトです)。

于 2010-07-07T20:48:48.657 に答える
0

あなたの質問に対する答えはわかりませんが、いくつかのポイントがあります。

  • プロセス テンプレートに関する質問であることを明確にするために、質問を編集しました。
  • また、Visual Studio プロジェクト ファイルではなく、チーム プロジェクトについて話していることも明確にしました。これら 2 つの編集を一緒に行うことで、File->Add New Project を使用したときに表示されるものについて質問していると人々が考えないようにする必要があります。

最後に、プロセス テンプレートをカスタマイズできることを考慮する必要があります。テンプレート自体に関する情報が必要でない限り、テンプレートごとではなく、一連のフィールドを整理することをお勧めします。

于 2009-07-02T13:30:28.597 に答える