質問

XMLファイルに情報を保存する内部設計ツールを使用して、いくつかの製品を開発しています。 TFSとの適切な統合を提供するために、デザイナーを使用している間に、チームエクスプローラーと対話することなく、ユーザーからのチェックインおよびチェックアウト操作をTFSで追跡するプロバイダーもコーディングしました。

要件は、ファイルをチェックインするときに関連するワークアイテムも追加することです、私はグーグルでいくつかのSDKサンプルを閲覧しましたが、ユーザーがコードからコードをワークアイテムに関連付けるか、コードからフルウィンドウフォームを実装する必要がありますか(ワークアイテムの取得と検索、それらの関連付け、チェックインの実行など)。 2つのソリューションの間では、記述する必要のあるコードの量に関して多くの違いがあるため、どんな情報も歓迎します。

役に立ちましたか?

解決 2

MSコンサルタントに確認しましたが、TFSまたはシェル拡張で使用されるチェックインウィンドウを表示する方法は、あまり安全ではない低レベルコードに頼るしかありません。

だから可能な解決策は、TFS Apiを使用して新しいC#コントロール/プロジェクトを作成し、TFSチェックインウィンドウを模倣することです。

よろしく マッシモ

他のヒント

workItemの更新に役立つコードを次に示します。また、詳細については[このリンク] [1]を試してください。

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;


namespace WorkItemTrackingSample2
{
    class Program
    {
        static void Main(string[] args)
        {
            // Connect to the server and the store.
            TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("YourTfsServerNameHere");
            WorkItemStore workItemStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
            // Get a specific WorkItem from the store.
            //   Replace "12345" with a WorkItem ID appropriate for testing.
            WorkItem workItem = workItemStore.GetWorkItem(12345);

            // Save the existing Priority so we can restore it later.
            int oldPriority = (int)workItem.Fields["Priority"].Value;

            // Set the Priority to an arbitrarily high number.
            workItem.Fields["Priority"].Value = 9999;

            // Display the results of this change.
            if (workItem.IsDirty)
                Console.WriteLine("The workItem has changed, but has not been saved.");

            if (workItem.IsValid() == false)
                Console.WriteLine("The workItem is not valid.");

            if (workItem.Fields["Priority"].IsValid == false)
                Console.WriteLine("The workItem's Priority field is not valid.");

            // Tries to save the invalid WorkItem.
            try
            {
                workItem.Save();
            }
            catch (ValidationException)
            {
                Console.WriteLine("The workItem threw a ValidationException.");
            }

            // Set the priority to a more reasonable number.
            if (oldPriority == 1)
                workItem.Fields["Priority"].Value = 2;
            else
                workItem.Fields["Priority"].Value = 1;

            // If the WorkItem is valid, saves the changed WorkItem.
            if (workItem.IsValid())
            {
                workItem.Save();
                Console.WriteLine("The workItem saved this time.");
            }

            // Restore the WorkItem's Priority to its original value.
            workItem.Fields["Priority"].Value = oldPriority;
            workItem.Save();
        }
    }
}


  [1]: http://msdn.microsoft.com/en-us/library/bb130323(VS.80).aspx
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top