【问题标题】:What is the best way to create a NuGet package for a Windows UWP library?为 Windows UWP 库创建 NuGet 包的最佳方法是什么?
【发布时间】:2020-04-20 15:20:55
【问题描述】:

我有几个项目共享相同的 UWP 控件。我想以与打包 .NET Standard 库(打包集成到 IDE 中)相同的方式打包它们。在不涉及分发 nuget.exe 副本的情况下,使用 Visual Studio 2019 执行此操作的最佳方法是什么?

【问题讨论】:

  • 你好朋友,这个问题有更新吗?如果问题仍然存在并阻止您,您能否在 VS 解决方案资源管理器和您的 xx.nuspec 文件中分享有关您的项目结构的一些详细信息,以便我可以尝试重现您的问题并为您检查。如果您自己找到了解决方法,您可以将其分享为帮助有类似问题的成员的答案。只是一个提醒:)

标签: visual-studio uwp nuget


【解决方案1】:

我想像打包 .NET Standard 一样打包它们 库(打包集成到 IDE 中)。

目前,只有新的 SDK 格式项目 (.net core and .net standard) 具有快速 right-click project=>pack 选项。

这种相同的行为(右键单击=>打包按钮)目前不适用于 UWP 库项目。

使用 Visual Studio 2019 执行此操作的最佳方法是什么? 涉及分发 nuget.exe 的副本?

另一种方法是使用Nuget.Build.Tasks.Pack 包。

第 1 步:使用可用的最新版本的包。

Step2:在VS中right-click project=>Unload the project=>Edit the xxx.csprj(也可以修改文件系统中的xx.csproj)将此脚本添加到<Project>标签中:

<Project xxx>
  ......

  <!--This custom PropertyGroup will be used to specify the package.-->
  <PropertyGroup>
    <PackageId>packageName</PackageId>
    <PackageVersion>1.2.2</PackageVersion>
    <PackageOutputPath>$(Outputpath)</PackageOutputPath>
    <Authors>unknown</Authors>

    <!--<Title></Title>
    <Description></Description>
    <Copyright></Copyright>
    <RequireLicenseAcceptance></RequireLicenseAcceptance>
    <LicenseUrl></LicenseUrl>
    <ProjectUrl></ProjectUrl>
    <IconUrl></IconUrl>
    <ReleaseNotes></ReleaseNotes>
    <Tags></Tags>
    <PackageTypes></PackageTypes>
    ...
    <NuspecFile></NuspecFile>-->
  </PropertyGroup>
</Project>

我们可以在那个PropertyGroup中指定包的ID,version,authors,outputpath(required),如果需要我们也可以在那里设置许多其他元素,比如Description, Title, ReleaseNotes, NuspecFile...

第 3 步: 现在我们可以打开 Developer Command Prompt for VS 运行 msbuild /t:pack ... 以使用命令行打包该项目。

或者我们可以将&lt;GeneratePackageOnBuild&gt;true&lt;/GeneratePackageOnBuild&gt;添加到那个PropertyGroup,然后如果我们在VS中构建(右键单击项目=>构建或构建解决方案),VS会在构建过程中自动打包该库。

关于这个话题的更多信息请参考this document,希望它有助于解决您的问题:)

【讨论】:

  • 这是朝着正确方向迈出的一步,但并不完整。当我尝试使用我新创建的包时,找不到我的任何资源(位图、主题、XAML)。我怀疑有一些额外的设置,但我找不到任何参考。
  • Could not copy the file "C:\Users\Fred\.nuget\packages\thetarex.forms\1.0.4\lib\uap10.0.17763\Forms\Assets\View.png" because it was not found. 根据上述建议出现此错误。
  • 如果你想将资源打包,请查看这两个文档(onetwo)。这两个文档都表明需要通过定义xx.nuspec文件来包含它们……希望对你有帮助。
【解决方案2】:

这是我们在 NuGet 文档中关于构建 UWP 控件的文档页面:https://docs.microsoft.com/en-us/nuget/guides/create-uwp-packages

请务必检查一下,并提出对该页面的任何改进建议。

【讨论】:

  • 是的。我在本周早些时候找到了该页面。解决托管 C# 应用程序的版本怎么样。此外,此解决方案的最大问题是我不想将 NuGet.exe 版本与我的库一起分发。显然 .NET Standard 库不需要它来构建 NuGet 包,所以它一定是可能的。
  • 另外,我似乎需要 NuGet 包的许可证才能将它们加载到 nuget.org。包含主题、xaml 控件以及上传到 nuget.org 所需的所有元数据的完整托管(C# 或 VB)示例将非常方便。
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
相关资源
最近更新 更多