Пакеты Wix Nuget - PullRequest
       11

Пакеты Wix Nuget

2 голосов
/ 25 апреля 2019

Итак, вот сценарий: у меня есть несколько проектов wix, в которых точно такие же дополнительные цели и задачи msbuild для автоматизации некоторых очень утомительных задач: такие как создание файла справки и authenticode, подписывающий msi и выходные файлы с помощью signtool.exe.

Устав от копирования изменений в эти скрипты в 5 разных репозиториев каждый раз, когда я исправлял. Итак, я стал умным и превратил их в пакеты nuget с файлом .targets в папке сборки. Простое восстановление с помощью nuget превращает список пакетов в целевые файлы.

Проблема Wix v3 не любит пакеты. Он не поддерживает ссылки на пакеты, так что package.config выглядит так. За исключением того, что визуальная студия не любит packages.config. Он с радостью восстановит пакеты (в папку, указанную с помощью nuget.config), но ни один из файлов .targets не будет импортирован автоматически.

Достаточно легко исправить: я просто добавил оператор импорта в мой файл wixproj. За исключением того, что Visual Studio автоматически не переоценивает wixproj после выполнения операции восстановления. Мы можем работать с этим, но действительно раздражает необходимость строить, выгружать проект, перезагружать проект и перестраивать каждый раз, когда меняются пакеты.

Поэтому я попытался это исправить Я просканировал выходные данные журнала стандартной сборки проекта C # и обнаружил файл Nuget.Targets, который можно импортировать в проект для предоставления целей pack и restore. Это также позволило мне преобразовать в packagereferences, которые несколько более удобны и менее запутанны, чем package.config, но мне все равно пришлось вручную добавить оператор import для файлов nuget.g.targets и nuget.g.props, которые были созданы restore цель.

И, поскольку мне пришлось импортировать эти файлы вручную, я вернулся к процессу сборки, выгрузки, перезагрузки, перестройки.

Попытка № 2 В ходе интенсивного поиска в Интернете я обнаружил, что msbuild недавно добавил флаг /restore в утилиту командной строки специально для принудительной переоценки проекта после восстановления пакетов. Это работает в командной строке, но Visual Studio, похоже, не имеет понятия. (Может быть из-за того, что wix v3 делает за кулисами в шаблоне Visual Studio?) В любом случае, они упоминают в примечаниях к проблеме, что они по существу используют задачу msbuild с новыми глобальными свойствами для принудительной переоценки. Поэтому я попытался добавить такой шаг в событие перед сборкой моего wixproj, но без соуса.

Вопрос

Как мне сказать Visual Studio, чтобы он заново оценил этот wixproj после запуска восстановления? Есть ли какое-то свойство или группа элементов, которые мне нужно добавить в wixproj? Есть ли какая-то цель, которую я могу вставить в процесс сборки?


Обновление 1:

Нашел свойство проекта, которое выглядело многообещающе: UseHostCompilerIfAvailable, но оно не сработало. Все еще есть та же проблема.

...