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"
- 在 "Process" 选项卡下,我将服务器路径存储在变量 "DeploymentScript" 中
- 从工具箱中添加了 "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),那么一切都应该没问题。 :)
我如何将“$/Test/BuildResources”之类的服务器路径转换为例如:"D:\test\etc.."
我是 运行 TFS 2013。我会使用 "GetWorkspace" 项目吗?
当我尝试使用 "GetWorkspace" 并在 Name 字段中指定 "$/Test" 时,出现错误信息。不确定这是否是这样做的方法。 谢谢
编辑:
这是我试过的。 这是我的设置:
我正在尝试将“$/IW_Xavier/Deployment”转换为本地路径
我还添加了 GetWorkspace 并设置如下:
但它不转换它:
我收到一条错误消息。我也尝试使用 "GetLocalPath"-不确定这是否符合我的要求,但它也不起作用。
编辑 2:
这就是我最后做的:
1.添加路径"Source Settings"
- 在 "Process" 选项卡下,我将服务器路径存储在变量 "DeploymentScript" 中
- 从工具箱中添加了 "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),那么一切都应该没问题。 :)