2013-02-27 75 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; } 
    } 
相关问题