配置 azure devops 管道以打包和推送带有组件的 UWP 库
Configure an azure devops pipeline to pack and push a UWP library with components
我正在尝试使用 azure 管道 'publish'(构建、nuget 打包和推送)一个 UWP 库项目到私有 azure 工件提要。我在管道中使用经典编辑器,具有以下代理:
- Nuget 工具安装程序 - 指定 5.5.1
- Nuget - 恢复
- Visual Studio 构建 - vs2019,发布,任何 cpu
- Nuget - 包
- Nuget - 推送
我可以成功打包 .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.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,布尔值 public DevTest MainPage.xaml 14
我想我需要使用 .nuspec 告诉 NuGet 包将组件的 .xaml 和 .xbf 文件复制到 .nupkg。我在 .nuspec 中输入了以下内容:
<?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>
..但是无论我是在 'NuGet pack' 中指定仅使用 .nuspec 还是同时指定 .nuspec 和 .csproj,我都会在尝试安装 nuget 包时收到以下错误:
严重性代码说明项目文件行抑制状态
错误 NU1202 Package idldev.DeviceEnumerationAndPairing 1.0.1-CI-20200421-150456 与 uap10.0.18362 (UAP,Version=v10.0.18362) 不兼容。包 idldev.DeviceEnumerationAndPairing 1.0.1-CI-20200421-150456 不支持任何目标框架。
..对于 win10-arm, win10-x86...
我认为我需要添加依赖项或 .target 文件?但我在黑暗中拍摄了一点。我知道那里有一些类似问题的问题,所以希望这不是重复的,并且它是有道理的。任何帮助表示赞赏...
您可以先查看这些提示:
1.In 您的第 3 步,您在尝试为 win10-arm、win10-x86 选择程序集时使用 any cpu
模式构建解决方案 ...
不同于在VS中本地构建,管道中的VS构建任务不支持batch build。因此您需要使用不同的平台多次构建解决方案。
2.Check Package 来自的源项目的目标框架。您应该确保包的目标框架支持您要在其中安装包的项目。(TargetPlatformVersion
和 TargetPlatformMinVersion
)
3.Check 如果您为发布配置生成 xml 文档。检查打包项目的csproj文件,是否存在这一行?:<DocumentationFile>bin\Release\xxxx.XML</DocumentationFile>
4.Here的one detailed document about how to pack uwp package. You can refer to it for more details. According to that、XAML文档应放入Themes文件夹。
我正在尝试使用 azure 管道 'publish'(构建、nuget 打包和推送)一个 UWP 库项目到私有 azure 工件提要。我在管道中使用经典编辑器,具有以下代理:
- Nuget 工具安装程序 - 指定 5.5.1
- Nuget - 恢复
- Visual Studio 构建 - vs2019,发布,任何 cpu
- Nuget - 包
- Nuget - 推送
我可以成功打包 .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.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,布尔值 public DevTest MainPage.xaml 14
我想我需要使用 .nuspec 告诉 NuGet 包将组件的 .xaml 和 .xbf 文件复制到 .nupkg。我在 .nuspec 中输入了以下内容:
<?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>
..但是无论我是在 'NuGet pack' 中指定仅使用 .nuspec 还是同时指定 .nuspec 和 .csproj,我都会在尝试安装 nuget 包时收到以下错误:
严重性代码说明项目文件行抑制状态 错误 NU1202 Package idldev.DeviceEnumerationAndPairing 1.0.1-CI-20200421-150456 与 uap10.0.18362 (UAP,Version=v10.0.18362) 不兼容。包 idldev.DeviceEnumerationAndPairing 1.0.1-CI-20200421-150456 不支持任何目标框架。
..对于 win10-arm, win10-x86...
我认为我需要添加依赖项或 .target 文件?但我在黑暗中拍摄了一点。我知道那里有一些类似问题的问题,所以希望这不是重复的,并且它是有道理的。任何帮助表示赞赏...
您可以先查看这些提示:
1.In 您的第 3 步,您在尝试为 win10-arm、win10-x86 选择程序集时使用 any cpu
模式构建解决方案 ...
不同于在VS中本地构建,管道中的VS构建任务不支持batch build。因此您需要使用不同的平台多次构建解决方案。
2.Check Package 来自的源项目的目标框架。您应该确保包的目标框架支持您要在其中安装包的项目。(TargetPlatformVersion
和 TargetPlatformMinVersion
)
3.Check 如果您为发布配置生成 xml 文档。检查打包项目的csproj文件,是否存在这一行?:<DocumentationFile>bin\Release\xxxx.XML</DocumentationFile>
4.Here的one detailed document about how to pack uwp package. You can refer to it for more details. According to that、XAML文档应放入Themes文件夹。