【问题标题】:TFS 2013 convert server path to local pathTFS 2013 将服务器路径转换为本地路径
【发布时间】:2016-01-21 23:16:03
【问题描述】:

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

我正在运行 TFS 2013。我会使用“GetWorkspace”项目吗?

当我尝试使用“GetWorkspace”并在 Name 字段中指定 "$/Test" 时,我收到一条错误消息。不确定这是否是这样做的方法。 谢谢

编辑:

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

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

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

但它不会转换它:

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

编辑 2:

这就是我最终做的事情: 1.在“源设置”中增加了路径

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

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

【问题讨论】:

    标签: tfsbuild workflow-activity


    【解决方案1】:

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

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

    如果您有给定的本地路径(在这种情况下,您的 SourcesDirectory) 您可以使用它来读取工作区缓存并获取信息 您需要构建服务器创建的服务器连接:

    // 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);
    

    一旦你有了一个工作空间,你就可以查询它的路径映射。它 将根据以下内容进行从服务器到本地路径的必要转换 您的工作区映射。例如:

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

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

    但是,此机制仅在您的构建定义时才有效 实际上设置工作区以包含这些文件。如果你需要 某个目录$/Foo/Bar,您需要确保它是 包含在构建定义的源设置详细信息选项卡中。

    来源: How do I resolve the root and relative paths of TFS folders on the server?

    另外,如果你必须同时转换两者,你也可以使用ConvertWorkspaceItem活动来实现。

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


    更新

    对不起,误会了,我终于明白了你在做什么。

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

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

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

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

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

    【讨论】:

    • 您的答案有效。但是我找到了另一个解决方案。我使用了工具箱中的“GetLocalPath”项(我必须将它移到初始化环境下方)。请参阅上面的编辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2014-05-22
    • 2014-04-27
    • 2012-01-15
    • 1970-01-01
    • 2013-01-23
    • 2019-10-01
    相关资源
    最近更新 更多