【问题标题】:Build process xaml file cannot find Workspace构建过程 xaml 文件找不到工作区
【发布时间】:2014-08-29 21:49:57
【问题描述】:

我正在尝试使用 Azure 和 Team Foundation Build Server located here 遵循 CI 教程,但在步骤 5 中遇到了构建配置模板 XAML 文件的配置问题。在尝试配置新的ConvertWorkSpaceItem,并将其添加到 TFS 提供的修改后的构建模板 (TfvsTemplate.12.xaml) 以便可以在 TFS 构建代理上运行自定义脚本,我尝试设置属性 Workspace = "Workspace",但我给出编译器错误:'Workspace' 是一种类型,不能用作表达式。

我已经进行了一些故障排除,其他人发生的错误——没有确定CreateWorkSpaceItem 的范围,或者使用了错误的 TFS 或 Visual Studio 版本——似乎都不是问题。我将逻辑正确放置在“在代理上运行”块中,所以范围应该是正确的,Visual Studio 和我的 TFS 服务器都在运行 2013。我唯一的想法是指令已过时,还有一些其他的我错过了需要采取的步骤。有什么想法吗?

编辑: Here are the parameters 用于第一个失败的转换项目。第二个失败的转换项类似。 Input 和 Result 变量是我为工作流定义的参数,作为教程说明的一部分。显示的错误是:“编译器错误遇到处理表达式“Workspace”。“Workspace”是一种类型,不能用作表达式。”

【问题讨论】:

  • 能否添加蓝色和白色感叹号显示的实际错误,以及显示活动的参数是什么
  • @JustTFS 如果您需要有关参数的更多信息,请告诉我。作为参考,所有这些步骤都在上面链接的说明的第 5 步中执行。

标签: xaml azure tfs


【解决方案1】:

好的,这已经出现了几次,对于 TFS 2013。

内置变量曾经可用于

SourcesDirectory、二进制目录和工作区

这些在 TFS 2013 中不再可用,您现在必须使用

Microsoft.TeamFoundation.Build.Activities.Extensions.WellKnownEnvironmentVariables

访问这些。

获取工作空间有点复杂,但如果你分配一些局部变量,你应该能够获取工作空间对象。

为sourcesDirectory(string)和buildDetail(IBuildDetail)声明局部变量,workSpace(Workspace)将它们的作用域设置为整个工作流

创建一个 GetEnvironmentVariable Activity 并将其 Result 值设置为 sourcesDirectory 并使用 Microsoft.TeamFoundation.Build.Activities.Extensions.WellKnownEnvironmentVariables.SourcesDirectory。

对 buildDetail = WellKnownEnvironmentVariables.BuildDetail 重复相同的操作

为workSpace对象创建一个assign task,设置这个为 工作区 = "[buildDetail.BuildServer.TeamProjectCollection.GetService().GetWorkspace(sourcesDirectory)]"

这应该会给你一个 Workspace 对象来使用。

注意:语法可能略有不同。

为了补充删除这些变量,MS 添加了一个新的 Activity

获取本地路径

这可能对你有用

【讨论】:

  • 这正是我想要的。按照建议,我用 GetLocalPath 项替换了我的两个 ConvertWorkspaceItem 组件,它现在就像一个魅力。谢谢!
猜你喜欢
  • 2018-11-20
  • 2012-07-21
  • 1970-01-01
  • 2017-09-28
  • 2022-01-02
  • 1970-01-01
  • 2018-11-16
  • 2018-09-23
  • 1970-01-01
相关资源
最近更新 更多