Command line 如何使用命令行将TFS代码下载到本地工作区
有人可以帮助我使用命令行将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
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;
}
}
}