TFS 2013 将服务器路径转换为本地路径

TFS 2013 convert server path to local path

我如何将“$/Test/BuildResources”之类的服务器路径转换为例如:"D:\test\etc.."

我是 运行 TFS 2013。我会使用 "GetWorkspace" 项目吗?

当我尝试使用 "GetWorkspace" 并在 Name 字段中指定 "$/Test" 时,出现错误信息。不确定这是否是这样做的方法。 谢谢

编辑:

这是我试过的。 这是我的设置:

我正在尝试将“$/IW_Xavier/Deployment”转换为本地路径

我还添加了 GetWorkspace 并设置如下:

但它不转换它:

我收到一条错误消息。我也尝试使用 "GetLocalPath"-不确定这是否符合我的要求,但它也不起作用。

编辑 2:

这就是我最后做的: 1.添加路径"Source Settings"

  1. 在 "Process" 选项卡下,我将服务器路径存储在变量 "DeploymentScript" 中
  2. 从工具箱中添加了 "GetLocalPath" 并为输出使用了一个变量

这对我有用。我得到了“#\IT_dfj”等的本地路径(C:\blah\blah...) 非常感谢

您不必转换它。如果你已经知道服务器路径,可以直接使用这个方法获取工作区Workspace.GetLocalItemForServerItem

请参考 Edward Thomson 的回答,其中包括关于使用 TFS API 查询服务器和本地路径的非常详细的解释。

If you have a given local path (in this case, your SourcesDirectory) you can use that to read the workspace cache and get the information you need for the server connection that the build server has created:

// Get the workspace information for the build server's workspace
 var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(sourcesDirectory);

// Get the TFS Team Project Collection information from Edward Thomson  the workspace cache
// information then load the TFS workspace itself.
 var server = new TfsTeamProjectCollection(workspaceInfo.serverUri);
 var workspace = workspaceInfo.GetWorkspace(server);

Once you have a workspace, you can query it for the path mappings. It will do the necessary translation from server to local path based on your workspace mappings. For example:

workspace.GetServerItemForLocalItem("D:\My\Local\Path");

and

workspace.GetLocalItemForServerItem("$/My/Server/Path");

This mechanism will only work, however, if your build definition actually sets up the workspace to include these files. If you need some directory $/Foo/Bar, you will need to make sure that it is included in the Source Settings details tab of the Build Definition.

Source:

此外,如果你必须转换两者,你也可以使用ConvertWorkspaceItem activity来实现。

并且在“GetWorkspace”activity 中的 Name 字段中,您必须 指定工作空间name(例如 "MyWorkspace" )或获取工作空间名称的变量。


已更新

抱歉造成误会,终于明白你的意思了。

首先,工作空间只代表这个,所以获取工作空间和工作空间名称将 return :FABRIKAM-1

而且这是源代码管理文件夹和本地文件夹,这是一个映射关系。当然这是在你的开发机器上。

但是,你想将服务器路径转换为本地路径,想获取 MSTest 文件的路径,但这是 运行ning 在你的 build agent .所以你不需要在你的开发机器上寻找它,你只需要在构建代理上寻找路径。

您要查找的仍然是 TF_BUILD_BUILDDIRECTORY(构建代理工作目录)。然后添加相对路径如xx\..\..。正如这个案例所说, 。无法通过自定义流程直接获取。

所以.......最终的解决方案。建议你 运行 a script in your build process 或使用 2015 new build (vNext build),那么一切都应该没问题。 :)