Установить SDK для разработки UWP в GithubActions CI?
Я пытаюсь создать несколько библиотек UWP и получаю эту ошибку:
D: \ a \ ZXing.Net.Xamarin \ ZXing.Net.Xamarin \ Source \ ZXing.Net.Mobile.WindowsUniversal \ ZXing.Net.Mobile.WindowsUniversal.csproj(155,3): ошибка MSB4019: импортированный проект "C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v11.0\Microsoft.Windows.UI.Xaml.CSharp.targets"не найден. Убедитесь, что путь в объявлении правильный и что файл существует на диске.
Предложение import в файле.csproj выглядит так:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
Итак, я попытался программно установить рабочую нагрузку UWP на виртуальную машину Windows2019 через шоколадный (как с этим пакетом, так и с этим другим; не с Windows10SDK, потому что он выдает ошибку при попытке установки) с помощью:
- run: |
choco install visualstudio2019-workload-universal
choco install visualstudio2019-workload-universalbuildtools
Но, похоже, это не помогает (очевидно, пакет успешно установлен), потому что я все еще получаю эту ошибку компиляции.
Также попытался включить дополнительные пакеты, но безрезультатно:
choco install visualstudio2019-workload-universal --package-parameters "--includeOptional"
ОБНОВЛЕНИЕ: оказалось, что на моей виртуальной машине CI уже был файлMicrosoft.Windows.UI.Xaml.CSharp.targets
, но он находился в C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\WindowsXaml\v16.0
(и другие его версии в подпапках под этой). Подробнее читайте в моем ответе.
2 ответа
Оказывается, версия VS2019, установленная на виртуальных машинах GithubActions, уже включает компоненты UWP (и другие, такие как Xamarin.iOS, Xamarin.Android, Xamarin.Mac и т. Д.); проблема заключалась в том, что моя сборка каким-то образом по умолчанию использовала старую версию MSBuild (та, что находится вC:/windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe
), который не знал об этих расширениях.
Как только я убедился, что использую версию MSBuild в комплекте с VS2019 (та, что в %ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe
) все снова заработало.
Чтобы исправить это в моей конкретной сборке, мне пришлось изменить build.cake
файл (IMO на самом деле может быть ошибкой в CAKE, что по умолчанию не обнаруживается правильная версия MSBuild...). Если вы хотите взглянуть на точное исправление (которое используетvswhere
чтобы найти MSBuild), это это.
Если шоколадный не работает должным образом, вы можете попробовать изменить Visual Studio с помощью интерфейса командной строки. Например, нижеприведенный пример добавляет рабочую нагрузку универсальной платформы в VS без запросов при запуске из PowerShell.
& "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" modify `
--installPath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" `
--add Microsoft.VisualStudio.Workload.Universal --passive --norestart
Visual Studio Enterprise 2019 включен в среду Windows Server 2019, а Visual Studio Enterprise 2017 включен в Windows Server 2016 R2 во все среды.
Я создал здесь образец репо: https://github.com/adam7/modify-visual-studio-install
Вы можете найти множество примеров параметров командной строки для визуальной установки студии и визуальной нагрузки студии и идентификаторов компонентов, а также как использовать параметры командной строки для установки Visual Studio в Визуальных документах Studio.