2016-04-12 6 views
0

TFS2015の背後にあるSQLデータベース(またはTFSのバージョン(この場合は2015または2010))がファイルの完全なファイルパスを格納しているかどうかを調べたいと思います。 Projectフォルダには情報(バージョン番号)が含まれていますが、この情報を追跡するためのより良い方法があると認識していますが、このパスに格納されているバージョンのみを持つ多くのレガシーデータがあります。私は情報を取り除いて使用するためにCrystal Reportsにデータを引き込みたいと思う。TFS2015:SQLデータベースに格納された完全なファイルパス

Screenshot of the information I'm hoping to pull from database

+0

私が持っていませんTFSのオンプレミス版が便利でしたが、私はいくつかのレポートを生成するためにそこに誘っていましたが、[このクエリ](http://billfellows.blogspot.com/2011/11/worst-query-i-ever- wrote.html)は非常に貴重です。探しているものはtfs_defaultデータベースに対して実行します – billinkc

答えて

1

代わりに、データベースに照会することで、我々はプログラムでそれを達成することをお勧めします、TFSのソース管理のフォルダの一覧を取得したいです。下記のブログやそれに関連するサンプルコードは、あなたがやりたいことになります。

http://blogs.microsoft.co.il/blogs/shair/archive/2009/02/26/tfs-api-part-16-mapping-source-control-using-versioncontrolserver.aspx

また、あなたを助けるべき、this caseにコードスニペットを確認してください。

ICommonStructureService structureService = (ICommonStructureService)Tfscollection.GetService(typeof(ICommonStructureService)); 
      ProjectInfo[] projects = structureService.ListAllProjects(); 
      //combo_projects.ItemsSource = projects; 
      ////Create VersionControlServer object from TFS 
      //sourceControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer)); 
      RecursionType recursion = RecursionType.OneLevel; 
      Item[] items = null; 
      string path = "$/" + projects[0].Name;//"$/TescoPOC/FetchStoryfromTFS"; 
      ItemSet itemSet = versionControl.GetItems(path, recursion); 
      items = itemSet.Items; 
      //Dictionary<string, int> FolderListName = new Dictionary<string, int>(); 
      List<string> FolderListName = new List<string>(); 
      foreach (Item keyItem in items) 
      { 
       char[] charSeparators = new char[] { '/' }; 
       //Using split to isolated the Project Name and the File Name 
       string[] ss = keyItem.ServerItem.Split(charSeparators, StringSplitOptions.None); 
       if (keyItem != items[0]) 
       { 
        string filename = keyItem.ServerItem.Replace(path + "/", string.Empty); 
        if (filename != "BuildProcessTemplates") 
        { 
         FolderListName.Add(filename); 
         //if (FolderListName.ContainsKey(filename)) 
         // FolderListName[filename] = FolderListName[filename] + 1; 
         //else 
         // FolderListName.Add(filename, 1); 
        } 
       } 
      } 
関連する問題