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

C# 具有物理文件路径异常的TFS查询历史记录,c#,visual-studio-2012,tfs,C#,Visual Studio 2012,Tfs,我有一段查询tfs历史记录的代码,但是在我的机器上我得到了一个异常 说: 没有C:\SDAM的工作文件夹映射 然而,如果我在同事的机器上运行同样的代码,就不会有问题 我正在使用: Microsoft.TeamFoundation.Client;版本10 Microsoft.TeamFoundation.VersionControl.Client;版本10 VS2012项目更新4 4.5框架 我尝试过的事情: 刷新缓存 删除缓存 检查了工作文件夹并使用Team Foundation SIDKE

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

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

然而,如果我在同事的机器上运行同样的代码,就不会有问题

我正在使用:

  • Microsoft.TeamFoundation.Client;版本10
  • Microsoft.TeamFoundation.VersionControl.Client;版本10
  • VS2012项目更新4
  • 4.5框架
我尝试过的事情:

  • 刷新缓存
  • 删除缓存
  • 检查了工作文件夹并使用Team Foundation SIDKEKE添加了它们,以确保我已经映射了源代码管理文件夹和本地文件夹。李>
  • 我已传入源代码管理文件夹路径$/SDAM,并获得了历史记录。我进入tfs资源管理器并检查$/SDAM是否映射到C:\SDAM
  • 我完全困惑不解,任何建议都将不胜感激。这段代码已经被我们广泛使用,我需要重用它

    结果

    tf workspaces /format:detailed /collection:http://XXXX/tfs/
    
    工作区:XXXXXXXX
    所有者:域\zzzzz
    计算机:XXXXXXXX
    评论:
    收藏:cccc\ddddd
    权限:私有
    位置:服务器
    文件时间:当前

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


    i可数函数库;
    字符串SourceControlPath=@“C:\SDAM”;
    var tfsUri=新Uri(@“http://XXXX/tfs/");
    var tfs=tfstreamprojectcollectionfactory.GetTeamProjectCollection(tfsUri);
    var vcs=tfs.GetService();
    VersionSpec fromVersion=null,toVersion=null;
    fromVersion=新的ChangesetVersionSpec(1);
    toVersion=新的ChangesetVersionSpec(2);
    t历史=
    询问历史(
    SourceControlPath,
    LatestVersionSpec.实例,
    0, 
    RecursionType.Full,
    无效的
    fromVersion,
    toVersion,
    Int32.MaxValue,
    是的,
    假);
    if(tfhistory!=null)
    {
    //做点什么
    }
    
    您的工具找不到工作文件夹映射,因为它不在您正在构建的SDK版本的工作文件夹缓存中。如果未指定团队项目集合,并且只希望通过本地路径连接到TFS,TFS将在工作文件夹缓存中查找,以确定哪个服务器和服务器路径对应于该本地路径

    如果您是根据SDK的10.0版本进行构建,那么它将查找由VisualStudio10.0(即VisualStudio2010)创建的工作文件夹缓存

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

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

  • 让您的工具连接到有问题的TFS服务器,以便获得工作文件夹信息的新副本

  • 将生成所依据的SDK版本与Visual Studio中使用的TFS版本相匹配


  • 如果您想动态加载最新的SDK,您可以。

    是否需要查询本地映射的路径,并且不能只使用
    $/SDAM/
    的服务器路径?是的,因为当时我只知道本地映射的路径。更改用户名参数的值是否有帮助?否,返回相同的异常。您是否可以编辑问题并将
    tf Workspace/格式:详细信息/收集:http://XXXX/tfs/
    进入问题?非常感谢,你答对了。这是一台新机器,我只运行了VS2012,没有运行vs2010。一旦我在2010年设置了工作区,世界上一切都正常了。所有这些现在都有意义,但在当时没有意义。
    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
    }