c# - 如何使用 Azure DevOps Pipelines 正确构建 MSI 安装项目?

标签 c# azure-devops azure-pipelines setup-project

在过去的几天里,我一直在苦苦思索如何设置 CI/CD 流程来构建简单的 WPF 解决方案并使用 Azure DevOps Pipelines 创建 MSI 安装文件(“工件”)。我试过使用 Build VS Installer来完成这个。我的主要问题是我不确切地知道我做错了什么或我遗漏了哪些步骤,而且我在任何地方都找不到关于此的明确说明。

这是我尝试过的:

  1. 使用 Hosted 2017 代理池和基本的 .NET 桌面模板。问题:

    • 从 VS Installer 项目创建 .msi 文件作为最后一项任务或在发布工件之前:

2018-11-28T22:57:56.3186071Z DEBUG:聚合:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com 2018-11-28T22:57:56.3211382Z 现在运行 (C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com) 带有参数 ("D:\a\1\s "/Build "release|any cpu"/Out "D:\a\1\b\BuildInstaller_Log_20181128225756.txt") 2018-11-28T22:58:54.0015320Z 完成运行 DevEnv 进程。成功=真实。 2018-11-28T22:58:54.1169279Z ##[警告]未找到 .MSI 文件,请检查您的构建配置。如果这是预期的,您可能会考虑使用默认的 Visual Studio 生成任务而不是此自定义安装程序任务。 2018-11-28T22:58:54.1434410Z ##[部分]完成:从 VS 安装程序项目创建 .msi 文件。

enter image description here

  1. 按照概述创建我自己的构建代理 in the documentation .我有 Visual Studio Community 2017 和 VS Installer Projects extension安装在该服务器上。我按照 this 中的步骤操作相关回答。结果:

2018-11-29T17:46:03.9813075Z DEBUG:聚合:System.Object[]\devenv.com 2018-11-29T17:46:04.4346060Z ##[错误]无法检索 cmdlet 的动态参数。指定的通配符模式无效:System.Object[] 2018-11-29T17:46:04.4716416Z ##[部分]完成:从 VS 安装程序项目创建 .msi 文件。

enter image description here

我还尝试了从市场而不是 DutchWorkz 的 DevEnv Build,但仍然无法获得 .msi 文件。有人可以告诉我一些关于如何实现这个简单目标的明确步骤吗?

最佳答案

我能够弄清楚为什么我会收到下面的特定错误消息,并想分享它以防将来对任何人有所帮助。

调试:

Aggregated: System.Object[]\devenv.com [error]Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: System.Object[]

问题是我的私有(private)构建服务器上安装了两个版本(专业版和企业版)的 Visual Studio 2017。一旦我删除了其中一个,一切都很好。不确定是否有办法让它与安装的两个一起工作,但我不需要两者。

关于c# - 如何使用 Azure DevOps Pipelines 正确构建 MSI 安装项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545164/

相关文章:

c# FromBase64String() 返回异常 : the input is not a valid base64 on some IOS device like IPHONE 6s

azure-devops - VSTS REST API Builds - List 中 minTime URI 参数的格式是什么?

c# - 自切换到 VS 2015 并使用 C#6 Roslyn 功能后,Visual Studio Online CI 每日构建失败

c# - 公共(public)获取/私有(private)设置属性的 XAML 序列化

c# - 表中最后一条记录的ID

c# - 我可以将参数列表转发/委托(delegate)给另一个方法吗?

typescript - 在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量

azure-devops - 如何从 xUnit 测试写入 Azure Devops 任务日志?

azure-devops - Azure Pipelines 中变量的最大长度是多少?

msbuild - 使用变量提取 MSDeploy Zip 包