2013-02-27 49 views
2

我正在從VSS到TFS遷移最近入住。我正在遷移的安裝使用多個VSS數據庫(其中很多)。編程方式確定VSS數據庫

我正在尋找一種簡單的方法來確定每個VSS數據庫的最後一個辦理登機手續的日期和時間,這樣我可以知道我是否需要刷新代碼已在TFS。

在一個高的水平,我想寫出這樣的方法:

DateTime GetLatestCheckIn(string pathToVssDatabase) {} 

有沒有辦法與VSS COM API做到這一點?

回答

0

我想我明白了!

這裏是一個非常粗剪,只是顯示最近的更新和更新日期控制檯應用程序。這不是很高效 - 現在我知道該怎麼做了,我會消除這種情況,只做一次,比較最近的項目,但是,這是它的要點:

 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Environment.CurrentDirectory = @"c:\Program Files (x86)\Microsoft Visual SourceSafe Upgrade"; 
      IVSSDatabase db = new VSSDatabase(); 

      db.Open(@"ThePath\srcsafe.ini", "Admin", "ThePassword"); 
      IVSSItem rootFolder = db.get_VSSItem("$/", false); 
      var versions = new List(); 
      foreach (IVSSVersion item in rootFolder.get_Versions((int)Microsoft.VisualStudio.SourceSafe.Interop.VSSFlags.VSSFLAG_RECURSYES)) 
      { 
       versions.Add(new VersionInfo() 
       { 
        ItemName = item.VSSItem.Name, 
        ItemFullPath = item.VSSItem.Spec, 
        ItemVersionDate = item.Date, 
        ItemVersionNumber = item.VersionNumber 
       }); 
      } 

      // echo all 
      var versionInfo = versions.OrderByDescending(i => i.ItemVersionDate).First(); 
      Console.WriteLine("{0} {1}", versionInfo.ItemFullPath, versionInfo.ItemVersionDate); 
      Console.ReadLine(); 
     } 
    } 

    class VersionInfo 
    { 
     public string ItemName { get; set; } 
     public string ItemFullPath { get; set; } 
     public DateTime ItemVersionDate { get; set; } 
     public int ItemVersionNumber { get; set; } 
    } 
相關問題