ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

TFS Advent Calendarの16日目・TFSの作業項目に添付ファイルを付加する/添付ファイルを取得する #tfsug

この記事はTFS Advent Calendarの16日目の記事です。
サイトはこちら:http://atnd.org/events/22819

プロジェクト一式はこちらです。

今回は、作業項目に添付ファイルを貼り付けてみます。また、添付ファイルのダウンロードもやってみます。
f:id:kaorun55:20111216094235p:plain

Main

今回に関係するコードのみ載せます

添付ファイル付き作業項目の作成

通常通り作業項目を埋めていきます。添付ファイルはWorkItem.Attachmentsにリストされるので、ここに追加します。新しい添付ファイルの指定はファイル名でおこないます。

// 添付ファイル付の作業項目を作成する
WorkItem newItem = tfs.GetNewWorkItem( "タスク" );
newItem.Title = "作業項目の概要です";
newItem.Description = "作業項目の詳細です";
newItem.Attachments.Add( new Attachment(
    @"Z:\kaorun\work\tfs_sandbox\TFS_AdventCalendar\AddAttachments\Program.cs" 
    ) );
newItem.Save();

作業項目の添付ファイルをダウンロードする

リストされているWorkItem.Attachmentsを回し、Attachment .Uriに、TFSでのファイルの格納パスがあるので、それをWebClient を使ってダウンロードしています。

// 添付ファイルをダウンロードする
WebClient request = new WebClient();
request.Credentials = CredentialCache.DefaultCredentials;

foreach ( Attachment attachment in newItem.Attachments ) {
    Console.WriteLine( attachment.Name );

    request.DownloadFile( attachment.Uri,
        Path.Combine( @"C:\Users\kaorun55\Desktop", attachment.Name ) );
}

TfsClient

新しいチケットを返すメソッドを作りました。作業種別(タスク/バグ)を外からもらって、WorkItemを返します

public WorkItem GetNewWorkItem( string workItemType )
{
    return new WorkItem( teamProject.WorkItemTypes[workItemType] );
}

まとめ

簡単に添付ファイルのアクセスができました。
ほかのBTSからの移行にも使えて便利です。