Последние пару дней я тянул за волосы, пытаясь понять, как настроить процесс CI / CD только для создания простого решения WPF и создания установочного файла MSI («артефакт») с помощью Azure DevOps Pipelines. Я пробовал использовать Сборка VS Installer для этого. Моя основная проблема в том, что я точно не знаю, что делаю не так и какие шаги мне не хватает, и нигде не могу найти четких инструкций по этому поводу.
Вот что я пробовал:
Использование пула агентов Hosted 2017 и базового шаблона рабочего стола .NET. Проблемы:
2018-11-28T22:57:56.3186071Z DEBUG: Aggregated: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com
2018-11-28T22:57:56.3211382Z Now running (C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com) with Arguments ("D:\a\1\s" /Build "release|any cpu" /Out "D:\a\1\b\BuildInstaller_Log_20181128225756.txt")
2018-11-28T22:58:54.0015320Z Done running DevEnv process. Success = True.
2018-11-28T22:58:54.1169279Z ##[warning]No .MSI files were found, please check your build-configuration. If this is expected, you might consider to use the default Visual Studio Build task instead of this custom Installer task.
2018-11-28T22:58:54.1434410Z ##[section]Finishing: Create .msi file(s) from VS Installer project(s).
2018-11-29T17:46:03.9813075Z DEBUG: Aggregated: System.Object[]\devenv.com
2018-11-29T17:46:04.4346060Z ##[error]Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: System.Object[]
2018-11-29T17:46:04.4716416Z ##[section]Finishing: Create .msi file(s) from VS Installer project(s).
Я также попробовал DevEnv Build из магазина вместо DutchWorkz, но все равно не смог получить файл .msi. Может кто-нибудь, пожалуйста, покажите мне несколько четких шагов, как достичь этой простой цели?
@RobBos Спасибо за предложение. Это то, что я читал о размещенных агентах, поэтому я попытался настроить свой собственный агент и убедился, что на этом компьютере установлено расширение VS. Все еще не мог заставить его работать. Это звучало бы здорово, если бы я знал, как это сделать. Не могли бы вы показать мне, как я с радостью приму это в качестве ответа. Моя конечная цель - вывести файл .msi независимо от метода (чем проще, тем лучше) :)
Чтобы выполнить задачи командной строки, добавьте задачу «Пакетный сценарий», значение «value» должно быть «C: \ Windows \ System32 \ cmd.exe», а значение «аргумента» должно быть: «Здесь идут команды компиляции msi!»
@Atebios Это похоже на то, что может сработать. Я попробовал, но ничего не вышло. Erro MSB4025: не удалось загрузить файл проекта. Данные на корневом уровне недействительны. Не уверен, что использовал правильные аргументы. У вас есть какие-нибудь указания по этому поводу? Спасибо.
Есть ли способ собрать MSI в режиме выпуска с помощью "DutchWorkz"?





Я смог понять, почему я получаю конкретное сообщение об ошибке ниже, и хотел поделиться, если это поможет кому-то в будущем.
ОТЛАЖИВАТЬ:
Aggregated:
System.Object[]\devenv.com[error]Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid:System.Object[]
Проблема заключалась в том, что на моем частном сервере сборки были установлены две версии Visual Studio 2017 (профессиональная и корпоративная). Как только я удалил один из них, все отлично заработало. Не уверен, есть ли способ заставить его работать с обоими установленными, но мне не нужны оба.
Большое спасибо за ваш вклад. У меня только VS2017 Community и SSDT установлены как отдельный экземпляр на этом сервере. Как вы думаете, это может быть источником проблемы? Я не вижу причин, по которым это не работает с версией от сообщества. Пожалуйста, поправьте меня, если я ошибаюсь.
Я просто размышляю, но не думаю, что установка SSDT будет проблемой. Если вы можете установить VS2017 Professional или Enterprise, я бы установил его и удалил Сообщество. Опять же, просто догадываюсь, но, возможно, расширение Build VS Installer не работает с сообществом. К сожалению, их документация не дает много информации. Не забывайте, что помимо расширения Build VS Installer, когда вы устанавливаете новую версию Visual Studio 2017, вам необходимо установить расширение проектов VS Installer, которое вы упомянули в своем OP.
Расширение Microsoft Visual Studio Installer Projects присутствует в средстве выполнения windows-latest. Узнать больше здесь
Короче говоря, используйте агент с windows-latest vmimage и собирайте через devenv.exe вместо MSBuild.
подробнее см. stackoverflow.com/a/68646694/257470
Если я правильно помню, у размещенных агентов для этого не установлено расширение VS. Вот почему для этого должен быть настроен частный агент. Кроме того, не могли бы вы запустить генерацию MSI из командной строки? Вы пробовали вручную запустить эту команду из PowerShell?