【Visual Studio Online】TFS APIを利用してVisual Studio Onlineからソースを取得する。

  • 2014.05.08 Thursday
  • 08:14
JUGEMテーマ:コンピュータ

 最近のソース管理のはやりはGitHubっていうらしいですね。うん。よくわからん。Visual Studio 2013 にはデフォルトでローカルGitなるものが付属していて、私もちょちょちょ程度に触ってみてちょっちょっちょ〜〜って感動したんですが、今回はTFSのお話。数か月前からVisual Studio Onlineを利用させてもらっているのですが、これが実に便利でして、自分が書いたサンプルコードをクラウド上にあるTFSにソース管理させてもらっている次第です。いっぱいPCを持ってると、ソースがあっちゃこっちゃいってしまって困ってたんですが、Visual Studio Onlineというサービスを利用することで、大分、ストレスが軽減されました。
 それで、ふと思ったんですが、Visual Studio OnlineってAzure上に設置されているTFSだと聞いたことがあるんです。つまり、TFS APIって利用できるなじゃない??って思い立ちまして、試してみたのですが、見事にTFS APIでVisual Studio Onlineにアクセスすることができました。おー便利かもー。という事で今回は、アクセス方法と簡単なソースの取得方法をご紹介します。前置き長くてごめんなさい。

■参照を追加する。
・Microsoft.TeamFoundation.Client.dll
・Microsoft.TeamFoundation.VersionControl.Client.dll
を参照に追加します。場合によってはほかのも追加する必要がありますが、今回のコードではこれだけで十分です。

■コードを書く。

using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace Art55.TfsApi20140508_001
{
    class Program
    {
        static void Main(string[] args)
        {
            var teamCollectionUri = new Uri(@"https://XXXXXXXX.visualstudio.com/DefaultCollection");
            var teamCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(teamCollectionUri);

            // 前に認証されていない場合は Team Foundation Server につながりを認証します。
            teamCollection.EnsureAuthenticated();

            var versionControlService = teamCollection.GetService<VersionControlServer>();

            const string localProjectPath = @"c:/source/test";
            Workspace localWorkspace = versionControlService.TryGetWorkspace(localProjectPath);
            if (localWorkspace != null)
            {
                // すでに存在する場合は、削除する。
                localWorkspace.Delete();
            }

            string workspaceName = string.Format("{0}_{1}", Environment.MachineName, DateTime.Now.ToString("yyyyMMddHHmmssms"));
            const string serverProjectPath = @"$/hoge/";
            localWorkspace = versionControlService
                .CreateWorkspace(
                    workspaceName,
                    versionControlService.AuthorizedUser,
                    string.Empty,
                    new[] { new WorkingFolder(serverProjectPath, localProjectPath) });

            localWorkspace.Get();

            localWorkspace.Delete();
        }
    }
}

ちょっとだけ説明。

var teamCollectionUri = new Uri(@"https://XXXXXXXX.visualstudio.com/DefaultCollection");
var teamCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(teamCollectionUri);

自分のvisual Stuido OnlineのURI(つまりURLです。)とチームコレクションを指定します。URIだけ指定して、後かチームコレクションにアクセスする2段構えの方法もあります。今回は、チームコレクションを直接指定しました。

const string localProjectPath = @"c:/source/test";

ローカルのワークスペースのパスを指定します。c:/source/testというパスを指定しています。一時的に利用するなら、時刻などを指定したフォルダを作成してもいいかもしれません。サンプルコードなので適当ですが、実際に利用しているWorkSpaceのパスなどを指定すると、ギャーってなるので注意してください。

string workspaceName = string.Format("{0}_{1}", Environment.MachineName, DateTime.Now.ToString("yyyyMMddHHmmssms"));

ワークスペース名です。今回は、既存のワークスペースは利用せず一時的に別のワークスペースを作成し、そこにソースを落としたいので、既存のワークスペースに被らないような名前を指定しました。ワークスペースが被らないことも注意する必要がありますが、その前に指定したlocalProjectPath も既存のワークスペースですでに指定されていたりするとエラーとなるので注意が必要です。

            localWorkspace = versionControlService
                .CreateWorkspace(
                    workspaceName,
                    versionControlService.AuthorizedUser,
                    string.Empty,
                    new[] { new WorkingFolder(serverProjectPath, localProjectPath) });

ワークスペースを作成します。既存のワークスペースを取得する場合は、GetWorkspaceメソッドまたあTryGetWorkspaceメソッドを利用します。

const string serverProjectPath = @"$/hoge/";

Visaul Studio Onlineの取得したいソースのパスを指定します。

localWorkspace.Get();

実際に、ソースを取得します。

localWorkspace.Delete();

一時的に利用したかっただけなのでワークスペースを削除します。削除し忘れるとVisual Studio 2013等から削除しなければなりません。

今回は、ユーザ名、ドメイン、パスワードを指定していませんが、これはVisual Studio 2013からVisual Stuido Onlineへ接続している為と思われます。未接続の場合は、認証する処理も必要です。

まとめ
1.Visual Studio Onlineは、ローカル上のTFSと同様にTFS APIが利用できる。
2.TFS APIは、以下のdllを参照することで利用できる。
 ・Microsoft.TeamFoundation.Client.dll
 ・Microsoft.TeamFoundation.VersionControl.Client.dll
3.TFS APIを利用することで、Visual Studio 2013からソース管理するよりも高度な操作が可能である。


 

【開発】Visual Studio Online いいね!

  • 2014.03.11 Tuesday
  • 23:38
JUGEMテーマ:コンピュータ

去年のマイクロソフトカンファレンスで「Visual Studio Online」のことを初めて知りました。情弱でごめんなさい。そして、年明けくらいだったか、アカウントを取得し、先週あたりから使い始めました。うん、オラびっくりだ!TFSは以前から利用していたのですが、プライベートなコーディングに関しては、ほぼソース管理してませんでした。ブログにソースを載せているぐらいが関の山だったんです。結構面倒でした。まずブログ書かないといけませんからね(笑)それが、とりあえず思いつたときにコード書いて、チェックインってしちゃえば、もう安心。複数台PCを利用していても、簡単に共有できます。家では「開発ひとり」なのですが、PCは複数なので困ってたんです。うん!最高!Visual Studio Online 最高!ありがとう!マイクロソフト!人数制限がありますが、少数なら無料で使えるので超お勧めです!うん。最高!

calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< March 2024 >>

あわせて読みたい

あわせて読みたいブログパーツ

selected entries

categories

archives

recent comment

  • 【WPF】DataGridに編集可能なComboBoxを表示するには?
    art55 (07/16)
  • 【WPF】DataGridに編集可能なComboBoxを表示するには?
    arisa (07/16)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    art55 (05/22)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    分解大好き (05/18)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/04)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    Gen (02/04)
  • 【キーボード】RealForce が壊れて帰ってきた。
    art55 (04/29)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/23)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    かるあ (02/22)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    art55 (01/16)

recent trackback

recommend

recommend

recommend

C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) (JUGEMレビュー »)
Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー

recommend

ろんりと集合
ろんりと集合 (JUGEMレビュー »)
中内 伸光
とてもわかりやすいです。

recommend

recommend

シャノン・ノイマン・ディジタル世界
シャノン・ノイマン・ディジタル世界 (JUGEMレビュー »)
市川 忠男
4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

recommend

recommend

東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS
東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS (JUGEMレビュー »)

テンキーレス、静音のRealForce91UBK-S。スコスコ感がたまらなく気持ちいいです。家と会社で2台持ってます。

recommend

recommend

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) (JUGEMレビュー »)
Jeffrey Richter
発売予定美 2013年10月10日。.NET Frameworkとお付き合いする人のバイブルですね。

recommend

recommend

キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。

recommend

Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM