【问题标题】:TFS '$(BuildLocation)' macro points to wrong path on Lab Environment templateTFS '$(BuildLocation)' 宏指向实验室环境模板上的错误路径
【发布时间】:2013-07-30 18:04:35
【问题描述】:

我很难找到有关此的任何信息。我刚刚为我们的一个主要项目创建了Build-Deploy-Test 构建定义,但是当工作流运行时,它报告“$(BuildLocation)”宏的错误值,这破坏了从部署阶段开始的所有内容(测试也尝试越过这条错误的路径)。

我知道是什么导致了问题,但我不知道如何解决。我们将实验室一重定向到的构建定义被配置为构建我们解决方案的“发布”配置。放置文件夹是“\outputServer\drops”。我希望 BuildLocation 宏随后返回 "\\outputServer\drops\<BuildName>\<BuildNameFormat>",但宏却返回 "\\outputServer\drops\<BuildName>\<BuildNameFormat>\Release"

我最初认为这是LabDefaultTemplate.11.xaml 模板(这是我正在尝试使用的模板)和旧的DefaultTemplate.xaml 之间的不兼容,我基于我们的自定义模板。我尝试更新我们的自定义模板以将新的默认值 (DefaultTemplate.11.1.xaml) 作为基础,但转换模板后问题仍然存在。

即使查看了DefaultTemplate.11.1 上的代码,我仍然没有看到它完全按配置名称过滤输出。那里唯一的处理基于解决方案或项目名称,默认情况下禁用(由构建定义配置中高级类别下的“解决方案特定构建输出”选项控制)。

为什么假设放置文件夹以“Release”结尾,而放置的输出根本没有放在此文件夹中?我设法通过将“..”附加到路径来使部署脚本运行良好,例如$(BuildLocation)\..\myScript,但是当工作流尝试运行自动化测试时,它似乎正在使用相同的宏并且显然没有找到测试 dll。

可以通过不在定义选项中的“要构建的项目”元素上指定构建配置来解决此问题(因此让它选择默认配置),但指定配置是我们有意识的决定,因为文件有差异,项目在Release模式下构建时,一些配置的转换也不同。

我目前正在使用 VS2012 Update 3/TFS 2012 Update 2,这对任何人都有帮助。

更新:

好的,我发现它在模板本身内执行此操作。实验室工作流程非常简单这一事实对此有所帮助。

Compute build location needed 'if 语句' 中,有一个似乎正在执行这种奇怪连接的赋值。代码如下:

If(LabWorkflowParameters.BuildDetails.Configuration Is Nothing, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsEmpty Or (SelectedBuildDetail.Information.GetNodesByType(Microsoft.TeamFoundation.Build.Common.InformationTypes.ConfigurationSummary, True)).Count = 1, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsPlatformEmptyOrAnyCpu, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Platform + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration)))

我什至不确定这是什么意思。这种行为对我来说似乎是一个错误,因为构建模板本身(不是实验室模板)不执行此连接。 LabTemplate 怎么能假设这种事情?

【问题讨论】:

  • 我也遇到了同样的问题。我还尝试从构建配置中删除 AnyCpu 平台设置,但这也不起作用。

标签: tfs automated-tests workflow-foundation-4 tfsbuild buildconfiguration


【解决方案1】:

从 LabDefaultTemplate 构建过程模板中删除活动似乎可行。

我不确定该分配活动的含义或目的是什么,但如果没有它,它似乎对我们来说工作得很好。

【讨论】:

  • 是的,我做了一些类似的事情来临时解决它:我修改了模板并放置了一个参数以在这些“构建输出依赖路径”和我认为更正确的“不连接任何东西”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 2015-11-21
相关资源
最近更新 更多