具有物理文件路径异常的TFS查询历史记录

时间:2013-11-19 18:36:56

标签: c# visual-studio-2012 tfs

我有一段代码可以查询tfs的历史记录但是在我的机器上我得到了一个异常 话说:

  

C:\ SDAM没有工作文件夹映射。

但是,如果我在同事机器中运行同一段代码,则没有问题。

我正在使用:

  • Microsoft.TeamFoundation.Client;版本10
  • Microsoft.TeamFoundation.VersionControl.Client;版本10
  • VS2012项目更新4
  • 4.5 Framework

我尝试过的事情:

  1. 刷新缓存
  2. 删除缓存。
  3. 检查工作文件夹并使用Team Foundation Sidekicks添加它们以确保我已映射源控制文件夹和本地文件夹。
  4. 我已经传入源控制文件夹路径$ / SDAM,我得到了历史记录。我进入tfs explorer并检查$ / SDAM是否映射到C:\ SDAM
  5. 我感到非常困惑,任何建议都会受到赞赏。这段代码已被我们广泛使用,我需要重复使用它。

    的结果
    tf workspaces /format:detailed /collection:http://XXXX/tfs/
    
      

    工作区:XXXXXXXX
      所有者:Domain \ zzzzzzz
      电脑:XXXXXXXX
      评论:
      收藏:cccc \ ddddd
      权限:私人
      位置:服务器
      文件时间:当前

         

    工作文件夹:
      $ / SDAM:C:\ SDAM


    IEnumerable tfsHistory;
    
    string SourceControlPath = @"C:\SDAM";
    
    var tfsUri = new Uri(@"http://XXXX/tfs/");
    var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri);
    var vcs = tfs.GetService<VersionControlServer>();
    
    VersionSpec fromVersion = null, toVersion = null;
    fromVersion = new ChangesetVersionSpec(1);
    toVersion = new ChangesetVersionSpec(2);
    tfsHistory = 
        vcs.QueryHistory(
            SourceControlPath, 
            LatestVersionSpec.Instance, 
            0, 
            RecursionType.Full, 
            null, 
            fromVersion, 
            toVersion, 
            Int32.MaxValue, 
            true, 
            false);
    
    if (tfsHistory != null)
    {
        //Do something
    }
    

1 个答案:

答案 0 :(得分:1)

您的工具无法找到工作文件夹映射,因为它不在您正在构建的SDK版本的工作文件夹缓存中。如果您没有指定Team Project Collection并希望仅通过本地路径连接到TFS,TFS将查找工作文件夹缓存以确定哪个服务器和服务器路径对应于该本地路径。

如果你是针对SDK的10.0版构建的,那么它正在寻找由Visual Studio 10.0(即Visual Studio 2010)创建的工作文件夹缓存。

但是,如果您运行的是Visual Studio 11.0和tf 11.0,那么它会将工作文件夹信息存储在Visual Studio 11.0的工作文件夹缓存中(即Visual Studio 2012)。

因此,您的工具无法仅使用工作文件夹映射来自行引导。你需要:

  1. 让您的工具连接到相关的TFS服务器,以便获取工作文件夹信息的新副本

  2. 将您构建的SDK版本与您在Visual Studio中使用的TFS版本相匹配

  3. 如果您想动态加载最新的SDK,您可以bind an assembly resolution handler

相关问题