如何在TFS中以编程方式签出要编辑的项目?

aba*_*hev 40 .net c# tfs tfs2010 vcs-checkout

我正在使用TFS 2010处理源代码控制下的实用程序处理文件.

如果一个项目尚未签出进行编辑,我将收到一个例外,因为文件处于只读模式,所以这是可以预测的.

签出文件有哪些方法?

PS我想要程序化的东西,而不是那么Process.Start("tf.exe", "...");适用.

Ben*_*Ben 38

这里提到的一些其他方法仅适用于某些版本的TFS或使用过时的方法.如果您收到404,则您使用的方法可能与您的服务器版本不兼容.

这种方法适用于2005年,2008年和2010年.我不再使用TFS,所以我没有测试过2013年.

var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(fileName);
using (var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri))
{
    var workspace = workspaceInfo.GetWorkspace(server);    
    workspace.PendEdit(fileName);
}
Run Code Online (Sandbox Code Playgroud)


小智 6

private const string tfsServer = @"http://tfsserver.org:8080/tfs";

public void CheckOutFromTFS(string fileName)
{
    using (TfsTeamProjectCollection pc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsServer)))        
    {
        if (pc != null)
        {
            WorkspaceInfo workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(fileName);
            if (null != workspaceInfo)
            {                   
                Workspace workspace = workspaceInfo.GetWorkspace(pc);
                workspace.PendEdit(fileName);
            }
        }
    }
    FileInfo fi = new FileInfo(fileName);
}
Run Code Online (Sandbox Code Playgroud)

请注意,这Microsoft.TeamFoundation.Client.TeamFoundationServerFactory已过时:TeamFoundationServer该类已过时.使用TeamFoundationProjectCollectionTfsConfigurationServer类与2010 Team Foundation Server通信.要与2005或2008 Team Foundation Server交谈,请使用该TeamFoundationProjectCollection课程.对应的工厂类是TfsTeamProjectCollectionFactory.