Установить 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" не найден. Убедитесь, что путь в объявлении правильный и что файл существует на диске.

Предложение импорта в файле .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 (и другие его версии в подпапках под этой). Подробнее смотрите в моем ответе.


person knocte    schedule 27.09.2019    source источник
comment
Вы проверили, хорошо ли работает ваш проект без ZXing и других сторонних библиотек?   -  person Roy Li - MSFT    schedule 30.09.2019
comment
Мой проект не использует ZXing, это ZXing! (это вилка)   -  person knocte    schedule 30.09.2019
comment
Итак, когда вы проверили расположение файла Microsoft.Windows.UI.Xaml.CSharp.targets, существует ли он по пути, указанному в журнале ошибок?   -  person Roy Li - MSFT    schedule 30.09.2019
comment
конечно нет :) но я узнал, что это в другом месте, скоро обновлю свой вопрос   -  person knocte    schedule 30.09.2019
comment
Кажется, шоколадка работает неправильно. Я предлагаю вам использовать установщик Visual Studio для загрузки рабочей нагрузки.   -  person Roy Li - MSFT    schedule 01.10.2019
comment
это в виртуальной машине, созданной GitHubCI, можно ли запустить установщик VisualStudio из командной строки без участия пользователя?   -  person knocte    schedule 01.10.2019
comment
К сожалению, я не могу этого сказать, потому что я не знаком с установщиком Visual Studio. Я предлагаю вам спросить об этом на форуме VS.   -  person Roy Li - MSFT    schedule 02.10.2019


Ответы (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 (ИМХО, это может быть ошибка в CAKE, которая не определяет правильную версию MSBuild по умолчанию...). Если вы хотите взглянуть на точное исправление (использующее vswhere для поиска MSBuild), это это.

person knocte    schedule 06.10.2019

Если шоколад не работает должным образом, вы можете попробовать изменить 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 и идентификаторы рабочей нагрузки и компонентов Visual Studio, а также как Используйте параметры командной строки для установки Visual Studio в документации по Visual Studio.

person Adam Cooper    schedule 04.10.2019
comment
Спасибо! Я попробую, но где находится vs_enterprise.exe? и если VS не установлен, есть ли официальный URL-адрес, по которому можно где-то получить vs_community.exe? - person knocte; 04.10.2019
comment
Я не смог нигде найти wget vs_enterprise, поэтому просто скачал его и добавил в свой репозиторий. - person Adam Cooper; 04.10.2019
comment
vs_enterprise — корпоративная версия, которая не бесплатна, поэтому ее нельзя найти? - person knocte; 04.10.2019
comment
VS Enterprise устанавливается на всех виртуальных машинах Windows GitHub Action, я должен был подумать об этом немного больше, потому что установщик доступен в каталоге установщика VS. Я обновил свой ответ, так что теперь не нужно ничего скачивать. - person Adam Cooper; 04.10.2019
comment
Вы правы, это не бесплатно, но кажется, что оно устанавливается на виртуальные машины, что очень приятно и означает, что вы можете делать всевозможные приятные вещи при создании с использованием действия. - person Adam Cooper; 04.10.2019
comment
Большое спасибо за ваш ответ, но я думаю, что нашел виновника чего-то другого! Я опубликую свои выводы в виде другого ответа, но, пожалуйста, не удаляйте свой, потому что я думаю, что он может быть кому-то полезен! я тоже проголосую - person knocte; 06.10.2019
comment
и я только что опубликовал свой ответ - person knocte; 06.10.2019