【问题标题】:Is there a way to support snapshots with NugGet and native libraries?有没有办法使用 NugGet 和本机库支持快照?
【发布时间】:2016-11-30 00:42:20
【问题描述】:

我们使用 Visual Studio 编写和维护本机 Windows 应用。我们正在研究使用 NuGet 来处理我们的依赖项,这些依赖项由本机静态库组成。

经过一些研究,我设法使用 NuGet、package.config 和 CoApp PowerShell 脚本来创建和使用带有本机库的 NuGet 包。我们现在面临的问题是我们需要 Snapshot 支持。

NuGet 3 及更高版本支持的翻转 PreRelease 机制(带有 * 表示版本翻转)看起来很棒,但是,它似乎只适用于 project.json 而不适用于 package.config。然而,Project.json 似乎不适用于本机包,因为它们没有安装在本地解决方案文件夹中,因此构建无法找到标头和库。

问题归结为:

  • 有没有办法将 project.json 和 NuGet 3 与本机静态库一起使用?
  • 如果不是,那么有哪些替代方案可以支持此用例? (用例是本地非托管 Windows 静态库的构建时依赖项分发)。

编辑:

最后,我们决定使用 Maven 进行依赖管理,因为 NuGet 似乎不支持我们的用例。我大约两周前提交了一个问题,但没有收到任何回复。但是,如果我们决定强制 NuGet 进入我们的用例,Wendy 提出的解决方案可能是可行的方法,所以我接受它。

【问题讨论】:

    标签: visual-studio nuget static-libraries native dependency-management


    【解决方案1】:

    有两种方法可以将内容文件添加到使用 project.json 文件的项目中。一个是“contentFiles”节点,另一个是 nuspec 文件中的“files”节点。详细步骤请参考:

    http://blog.nuget.org/20160126/nuget-contentFiles-demystified.html

    但请注意,这些方式仅支持 UWP 和 Portable 类库。

    此功能仅适用于将安装到使用 project.json 文件管理的项目的包。 目前只有两种项目类型由 project.json 管理。

    1.UWP 应用

    2.可移植类库

    contentFiles 选项不适用于其他项目类型

    如果您使用的是.NET Core应用程序或其他使用project.json的类型项目,目前不支持将nuget包中的内容文件添加到项目中。

    【讨论】:

    • 感谢您的回答。这听起来很有希望。不幸的是,使用 CoApp 工具使我们能够抽象出使用不同二进制文件进行不同配置的问题,这实际上会使问题复杂化。但它可能仍然有用。此外,这将使我们不得不手动设置包含和链接器位置的任务,这是由 CoApp 生成的包通过 .targets 文件自动完成的。
    • 我发现静态库并没有直接添加到使用project.json文件的项目中,而是列在project.lock.json文件中。您可以在此文件中搜索它们。
    • 根据yishaigalatzer在本期的回复,当前版本只支持project.json:github.com/NuGet/Home/issues/1891但下面的帖子提供了另一种方法:stackoverflow.com/questions/26835197/…
    猜你喜欢
    • 1970-01-01
    • 2022-08-24
    • 2019-03-30
    • 2019-09-21
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多