Command line 如何使用命令行将TFS代码下载到本地工作区

Command line 如何使用命令行将TFS代码下载到本地工作区,command-line,tfs,Command Line,Tfs,有人可以帮助我使用命令行将TFS代码下载到本地工作区的步骤吗 到目前为止,我尝试了以下代码,但遇到了多个问题 var rv = ProcessHelper.Run( LocalWorkspace, @"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team

有人可以帮助我使用命令行将TFS代码下载到本地工作区的步骤吗

到目前为止,我尝试了以下代码,但遇到了多个问题

 var rv = ProcessHelper.Run(
            LocalWorkspace,
            @"C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe“, $“get\”{LocalWorkspace}\”


对于上面的代码,它表示路径不受支持或未指定。首先,对于该示例,您需要向项目添加必要的程序集引用,然后按如下方式使用它们:

   using System.IO;
   using System.Net;
   using Microsoft.TeamFoundation.Client;
   using Microsoft.TeamFoundation.Framework.Common;
   using Microsoft.TeamFoundation.Framework.Client;
   using Microsoft.TeamFoundation.VersionControl.Client;
您可以将此软件包安装到您的项目中:

有一个例子:

其次,对于TF命令,您可以检查构建日志中的详细命令(TFVC存储库作为源),例如(签出任务):


我提出了一个将TFS目录下载到本地工作区的解决方案。希望这段代码能得到后代的支持

  • 在某个临时文件夹中创建本地工作区

     LocalWorkspace = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid():n}");
    
        if (!Directory.Exists(LocalWorkspace))
        {
            Directory.CreateDirectory(LocalWorkspace);
        }
    
    ProcessHelper.Run(
          LocalWorkspace,
          @"C:\Program Files (x86)\Microsoft Visual 
     Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team 
     Explorer\tf.exe",
          $"workspace /new /noprompt /collection:<your project url> /location:local 
    <workspace name>")
    

    你自己采取了哪些步骤来解决这个问题?你看了文档了吗?谷歌?我在主体中添加了我尝试过的一个代码和错误详细信息。我还尝试了另一个解决方案,但我在解决TfsTeamProjectCollection时遇到了错误。错误为“无法加载类型…”,谢谢你的回复。我遵循了”“但我以错误“无法加载类型…”结束,尽管我从我的框中将上述程序集添加到了我的项目中。因此,我采用了不同的方法来使用tf.exe,创建一个工作区并获取最新的。你可以。
     LocalWorkspace = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid():n}");
    
        if (!Directory.Exists(LocalWorkspace))
        {
            Directory.CreateDirectory(LocalWorkspace);
        }
    
    ProcessHelper.Run(
          LocalWorkspace,
          @"C:\Program Files (x86)\Microsoft Visual 
     Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team 
     Explorer\tf.exe",
          $"workspace /new /noprompt /collection:<your project url> /location:local 
    <workspace name>")
    
     ProcessHelper.Run(
            LocalWorkspace,
            @"C:\Program Files (x86)\Microsoft Visual 
     Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team 
    Explorer\tf.exe",
            $"get <TeamProject> /recursive"));
    
       public sealed class ProcessHelper
        {
        private static string outputData;
    
        public static string Run(string workingDirectory, string executable, string arguments)
        {
            outputData = string.Empty;
    
            try
            {
                using Process proc = new Process();
    
                proc.StartInfo.WorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), workingDirectory);
                proc.StartInfo.FileName = executable;
                proc.StartInfo.Arguments = arguments;
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.CreateNoWindow = true;
                proc.ErrorDataReceived += DataReceived;
                proc.OutputDataReceived += DataReceived;
                proc.EnableRaisingEvents = true;
                proc.Start();
                proc.BeginOutputReadLine();
                proc.BeginErrorReadLine();
    
                proc.WaitForExit();
            }
            catch (Exception ex)
            {
                return $"{executable} | {workingDirectory} | {arguments}{Environment.NewLine}{Environment.NewLine}{ex}";
            }
    
            return $"{executable} | {workingDirectory} | {arguments}{Environment.NewLine}{Environment.NewLine}{outputData}";
        }
    
        static void DataReceived(object sender, DataReceivedEventArgs e)
        {
            string data = e.Data;
            if (!String.IsNullOrEmpty(data))
            {
                Console.WriteLine(data);
                outputData += data;
            }
        }
    }