проблема
Я просто передал добавление приложения UWP к управлению источником. Однако моему CI-серверу (Jenkins), похоже, не понравилось:
Ошибка MSB4019: импортированный проект "C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v14.0\Microsoft.Windows.UI.Xaml.CSharp.targets" не найден. Убедитесь, что путь в объявлении правильный, и что файл существует на диске.
Это происходит из-за импорта файла проекта UWP:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
На моей локальной машине я вижу этот файл, расположенный по адресу:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.Targets
Очевидно, это связано с моей локальной установкой Visual Studio 2017. Однако на сервере CI нет установленной Visual Studio. Я предполагаю, что именно поэтому MSBuildExtensionsPath
решает путь, упомянутый в ошибке.
зависимости
На сервере CI уже установлены следующие элементы:
- Visual Studio Build Tools 2017 (скачать)
- Windows 10 SDK 10.0.15063.468 (скачать)
- Xamarin.VisualStudio 4.5.0.476 (скачать)
- .NET Framework 4.5.1-4.7 SDK
Я предположил, что они будут включать необходимые зависимости, но я не могу найти Microsoft.Windows.UI.Xaml.CSharp.targets
где угодно.
Временное решение
Копирование каталога на моем локальном компьютере
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0
серверу CI на
C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v14.0
кажется, разрешает ошибку, но он чувствует себя очень взломанным.
Вопрос
Есть ли способ решить эту проблему без установки Visual Studio 2017 на сервере CI или копирования/переименования файлов вручную?
ОБНОВЛЕНИЕ 2018-01-12:
Это все еще проблема с последней версией VSBT. Единственное, что нужно сообщить, это ошибка, измененная с v14 на v15. После копирования одного и того же каталога на v15 ошибка снова исчезнет. Однако появляется другая, казалось бы, несвязанная ошибка:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1124,5): ошибка MSB3644: сборки ссылок для фреймворка ".NETCore, Version = v5.0 "не были найдены. Чтобы решить эту проблему, установите пакет SDK или Targeting Pack для этой версии фреймворка или перенастройте приложение на версию фреймворка, для которого установлен пакет SDK или Targeting Pack. Обратите внимание, что сборки будут решены из глобального сборочного кэша (GAC) и будут использоваться вместо ссылочных сборок. Поэтому ваша сборка может быть неправильно нацелена на структуру, которую вы планируете использовать.
ОБНОВЛЕНИЕ 2018-01-15
.NETCore,Version=v5.0
устранена путем копирования следующего каталога с моей локальной машины на сервер сборки:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v5.0
Хотя сборка UWP успешна, никакого приложения не генерируется. Кажется, это указывает на то, что в VSBT отсутствует другая зависимость.