Фон
Неявный импорт directory.build.props и directory.build.targets является встроенной функцией MSBuild 15.0+.Он не должен быть в новом формате стиля проекта SDK, чтобы он работал.Волшебство magic происходит при импорте microsoft.common.props , который автоматически выполняется в стиле SDK, и большинство проектов более старого стиля включают в качестве первого импорта в файл проекта.Это задокументировано здесь .
К сожалению, проекты WiX не включают этот импорт, поэтому он не берется (как показано здесь в источнике Votive).Я не могу сказать почему, но может быть причина того, что microsoft.common.props исключен.
Поскольку неясно, импортируется ли microsoft.common.props может вызвать у вас горе, рекомендуемый подход - импортировать расширения вручную, используя новую функцию GetPathOfFileAbove .Вам нужно сделать это только один раз.
Решение
- Выгрузить проект с помощью Щелкните правой кнопкой мыши проект → Выгрузить {имя}…
- Щелкните правой кнопкой мыши на проекте → Изменить {имя}…
Добавьте следующее в Строка 3 (должен быть первым элементом в <Project>
):
<Import Project="$([MSBuild]::GetPathOfFileAbove(directory.build.props))"
Condition="Exists('$([MSBuild]::GetPathOfFileAbove(directory.build.props))')" />
Добавьте в конец файла перед следующие объекты WiX:
<Import Project="$([MSBuild]::GetPathOfFileAbove(directory.build.targets))"
Condition="Exists('$([MSBuild]::GetPathOfFileAbove(directory.build.targets))')" />
Если вам нужно подключиться к процессу или целям сборки WiX, используйте свойства сборки CustomBeforeWixTargets и CustomAfterWixTargets , которые могут ссылаться на каталог .Сам файл build.targets через зарезервированное свойство MSBuildThisFileFullPath .Это гарантирует, что вещи будут импортированы WiX в соответствующее время.
После того, как вы настроите использование directory.build.props и directory.build.targets будет как положено.Если WiX когда-либо изначально поддерживает эти расширения сборки, вы выровняетесь и сможете удалить этот явный импорт на досуге.