我有一个桌面应用程序来修改一些受源代码控制的xml文件。该程序应该能够获取文件,对其进行修改并进行签入。我已经知道如何使用tf进行所有操作;但是,我不知道如何使用代码为Visual Studio运行开发人员命令提示符。另外,该程序将安装在没有Visual Studio的计算机中;因此,他们在任何地方都不会使用tf命令。考虑到所有这些,运行以下命令的最佳方法是什么?
mkdir C:\Temp\PROGRAM
cd C:\Temp\PROGRAM && tf workspace /new /noprompt PROGRAM /collection:"http://myserver:8080/tfs/mycollection"
cd C:\Temp\PROGRAM && tf workfold /map $/my/server/route/to/map C:\Temp\PROGRAM
cd C:\Temp\PROGRAM && tf get
我知道有一些库可以与tfvc一起使用,但是我没有使用过它们,而且看起来不像运行命令那样清晰。任何能够做到与上述命令相同的解决方案将受到欢迎。
如果可能包含在解决方案中:
编辑
我最终使用的代码是
static void Load(string local, string server, Uri urlCollection)
{
Directory.CreateDirectory(local);
Workspace workspace = GetWorkspace(urlCollection, "MyWorkspaceName");
workspace.Map(server, local);
workspace.Get();
}
static Workspace GetWorkspace(Uri urlCollection, string name)
{
VersionControlServer vcs = new TfsTeamProjectCollection(urlCollection)
.GetService<VersionControlServer>();
try
{ return vcs.GetWorkspace(name, vcs.AuthorizedUser))}
catch(Exception)
{ return vcs.CreateWorkspace(name, vcs.AuthorizedUser)); }
}
答案 0 :(得分:1)
根据您的描述,您想要从TFS服务器中拉出文件,然后以编程方式签入更改的文件。
您可以使用TFS客户端API来实现此目的。建议您浏览巴克·霍奇斯(Buck Hodges)的博客,该博客显示了如何创建工作区,进行更改并签入这些更改。
请参考 Team Foundation Version Control client API example for TFS 2010 and newer
关于如何从TFS获取文件,Web门户中也有多个示例,建议您使用VersionControlServer.GetItem方法
用法示例:
// Get the latest Item for local path "C:\projects\myfiles.cs"
Item item1 = versionControlServer.GetItem("C:\projects\myfiles.cs");
// Get ItemId = 12345 for changesetId = 54321
Item item2 = versionControlServer.GetItem(12345,54321);
// Get the latest Item for server path "$/ProjectName/myfile.cs"
Item item1 = versionControlServer.GetItem("$/ProjectName/myfile.cs", VersionSpec.Latest);
您还可以选择一个源代码的历史版本以进行下拉,有关完整代码,请参见以下教程:Team Foundation Server API: Programmatically Downloading Files From Source Control
另一种方法是使用Powershell脚本来处理此问题,请在此处查看:Download files from TFS server with PowerShell
答案 1 :(得分:0)
您可以在计算机上安装Team Explorer Everywhere,它使您能够在不使用Visual Studio的情况下使用TFS命令行(“ tf”命令)。