Сконфигурируйте конвейер devops azure для упаковки и создания библиотеки UWP UWP с компонентами - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь 'опубликовать sh' (сборка, пакет nuget и pu sh) проекта библиотеки UWP в частном фиде azure с использованием конвейеров azure. Я использую редактор classi c в конвейерах со следующими агентами:

  • Установщик инструмента Nuget - укажите 5.5.1
  • Nuget - восстановите
  • Visual Studio Build - vs2019, выпуск, любой процессор
  • Nuget - пакет
  • Nuget - pu sh

Я могу успешно упаковать файл .csproj, но когда я установить пакет nuget и использовать компонент из библиотеки. Я получаю эту ошибку:

Код серьезности Описание Ошибка состояния подавления строки файла проекта XDG0062 System.Reflection.TargetInvocationException: Исключение было сгенерировано целью вызова. ---> Windows .UI.Xaml.Markup.XamlParseException: Сбой разбора XAML. в Windows .UI.Xaml.Application.LoadComponent (Компонент объекта, URI resourceLocator, ComponentResourceLocation componentResourceLocation) в DeviceEnumerationAndPairing.Components.SerialDevicePicker..ctor () --- Конец внутренней трассировки стека исключений --- в System.RandleTy. CreateInstance (тип RuntimeType, Boolean publi c DevTest MainPage.xaml 14

Я думаю, что мне нужно использовать .nuspe c, чтобы сообщить пакету NuGet, чтобы он копировал файлы .xaml и .xbf компонента в .nupkg. Я ввел следующее в .nuspe c:

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata >
    <id>myfeedname.DeviceEnumerationAndPairing</id>
    <version>1.0.2</version>
    <title>DeviceEnumerationAndPairing</title>
    <authors>idldev</authors>
    <owners>idldev</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Internal uwp library for device enumeration and pairing</description>
    <releaseNotes>Development</releaseNotes>
    <tags>device serial pairing idl idldev</tags>
  </metadata >
  <files>
    <!-- WinMd and IntelliSense -->
    <!-- XAML controls -->
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing.XML" target="lib\uap10.0"/>
    <file src="..\DeviceEnumerationAndPairing\obj\Release\embed\DeviceEnumerationAndPairing\Components\SerialDevicePicker.xbf" target="lib\uap10.0\Components"/>
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing\Components\SerialDevicePicker.xaml" target="lib\uap10.0\Components"/>
    <!-- DLLs and resources -->
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing.dll" target="runtimes\win10-arm\native\DeviceEnumerationAndPairing.dll"/>
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing.pri" target="runtimes\win10-arm\native\DeviceEnumerationAndPairing.pri"/>
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing.dll" target="runtimes\win10-x64\native\DeviceEnumerationAndPairing.dll"/>
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing.pri" target="runtimes\win10-x64\native\DeviceEnumerationAndPairing.pri"/>
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing.dll" target="runtimes\win10-x86\native\DeviceEnumerationAndPairing.dll"/>
    <file src="..\DeviceEnumerationAndPairing\bin\Release\DeviceEnumerationAndPairing.pri" target="runtimes\win10-x86\native\DeviceEnumerationAndPairing.pri"/>
    </files>
</package>

.. но указывать ли я, используя только .nuspe c, или оба .nuspe c и .csproj - в «пакете NuGet» я получаю следующую ошибку при попытке установить пакет nuget:

Код серьезности Описание Ошибка состояния подавления строки файла проекта NU1202 Пакет idldev.DeviceEnumerationAndPairing 1.0.1-CI -20200421-150456 несовместим с uap10.0.18362 (UAP, версия = v10.0.18362). Пакет idldev.DeviceEnumerationAndPairi ng 1.0.1-CI-20200421-150456 не поддерживает целевые рамки.

.. а для win10-arm win10-x86 ...

Я думаю, что мне нужно добавить Зависимость или .target файл? но я немного стреляю в темноте. Я знаю, что есть некоторые вопросы с похожими проблемами, поэтому надеюсь, что это не дубликат, и что это имеет смысл. Любая помощь приветствуется ...

1 Ответ

1 голос
/ 22 апреля 2020

Сначала вы можете проверить эти советы:

1.В своем шаге 3 вы строите решение в режиме any cpu, пытаясь выбрать сборки для win10-arm, win10-x86 .. .

В отличие от локальной сборки в VS, задача сборки VS в конвейере не может поддерживать пакетную сборку . Поэтому вам нужно несколько раз построить решение для разных платформ.

2. Проверьте целевую среду исходного проекта, из которого поставляется Пакет. Вы должны убедиться, что целевая инфраструктура пакета поддерживает проект, в который вы хотите установить пакет. (* TargetPlatformVersion и TargetPlatformMinVersion)

3. Проверьте, генерируете ли вы документ xml для конфигурации выпуска. Проверьте файл csproj проекта пакета, существует ли эта строка?: <DocumentationFile>bin\Release\xxxx.XML</DocumentationFile>

4. Вот один подробный документ о том, как упаковать пакет uwp. Вы можете обратиться к нему для более подробной информации. Согласно , что , документ XAML должен быть помещен в папку Темы.

...