我是不是可以从 XAML 构建模板中访问特定的 MSBuild 参数?

Posted

技术标签:

【中文标题】我是不是可以从 XAML 构建模板中访问特定的 MSBuild 参数?【英文标题】:Is it possible for me to access a specific MSBuild argument from within a XAML build template?我是否可以从 XAML 构建模板中访问特定的 MSBuild 参数? 【发布时间】:2018-08-23 07:06:59 【问题描述】:

第一次发帖,提前致歉。

我对构建还很陌生,并且一直面临着迁移一些旧的 2010 构建以准备在我工作的公司迁移到 TFS 2015 的任务。

我基本上是成功的,但不得不求助于 Powershell 来执行一些任务,因为正在构建的解决方案太旧了。虽然这很容易实现;我遇到了一个障碍。我们的源代码控制中有几个分支,理想情况下我正在移动的构建需要能够针对其中的任何一个运行。目前,我必须为每个分支创建运行重复 Powershell 脚本的重复构建,因为我必须在 Powershell 脚本中为每个分支显式定义文件夹结构。

所以我要做的是使用一个带有分支名称的 MSBuild 参数,这样我就可以将它作为构建模板中的参数传递给 Powershell 脚本,这意味着我可以将一个构建用于任何树枝。我唯一的问题是我似乎无法弄清楚如何访问单个构建参数属性并将其传递给脚本。

因此,例如,如果我的构建参数是“p:/Branch=Development /p:Configuration=Release /p:/DeployOnBuild=true”,那么在 XAML 工作流中有什么方法可以访问“分支”参数?

抱歉,如果我胡扯了;如果我能解决任何问题,请告诉我。

提前致谢。

【问题讨论】:

他们为什么要迁移到 TFS 2015 而不是 TFS 2017? 2017 仍然向后兼容 XAML 版本。最好的办法是尽快开始将这些 XAML 构建迁移到新的构建系统,因为 XAML 构建支持即将结束。 因为其他业务都使用 TFS 2015,然后我们在角落里强迫他们保持 TFS 2010 服务器运行。坦率地说,我们的构建是一团糟,一旦我们在 TFS 2015 上,我们将考虑使用 VSTS 从头开始​​重新创建它们,但与此同时,我被要求在下周末之前获得我们古老的解决方案及其古老的解决方案在 TFS 2015 中构建构建。当我们现在进行迁移时,世界不会崩溃,但是不必仅仅因为每个解决方案都需要在我们的任何分支上运行,就不必为 6 个解决方案创建 5 个构建。 【参考方案1】:

MSBuild 参数在 MSBuildArguments 属性中传递。如果您要提取特定参数,例如 BranchName,则需要在 XAML 中对其进行解析。您可以这样做,也可以添加另一个属性来传递分支名称。

【讨论】:

你知道我该怎么做吗?我实际上发现了一些由我们团队的前成员编写的自定义活动,它们已经提取了我需要的值,但他们在代码中使用了它。我需要返回该值(我可以再次使用我找到的代码来执行此操作)并进一步使用它,但我只是不知道如何在 XAML 模板中与之交互。我可以将该值放入构建变量中吗?或者与工作流中先前活动的某种输出值进行交互? 抱歉回复晚了。之前没有登录。您可能会发现此链接很有帮助blog.jessehouwing.nl/2013/07/…

以上是关于我是不是可以从 XAML 构建模板中访问特定的 MSBuild 参数?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin XAML语言教程构建ControlTemplate控件模板

在通用 Windows 应用 (XAML) 中启用后退/前进和刷新手势

Xamarin XAML语言教程构建ControlTemplate控件模板

配置 Bamboo 以使用 MS Build Xaml 模板

如何从 xaml 访问 UserControl 内的按钮?

如何从 UWP 类中仅访问一种特定方法?