在不同的 netstandard2.0 库 NU1202 中安装 netstandard2.0 Nuget 包

Installing a netstandard2.0 Nuget Package inside a different netstandard2.0 library NU1202

我目前正在努力解决一些看似简单的问题,但我找不到任何有类似问题的人。

我正在将一些库转换为 netStandard,其中一个依赖于另一个。我们称他们为 A 和 B。

A 正在编译为 netStandard2.0 库,根据目录中的 dotnet --version 使用 3.1 SDK 构建。 nupkg 构建在 Release 文件夹中,我将其移动到本地包源以在我的盒子上进行测试。

B 也是一个 netStandard2.0 class 库。它需要 A,但是在 B 的 NuGet 包管理器中导航到我的 A 的 nupkg 并单击安装会生成奇怪的错误。

NU1202 A不兼容netStandard2.0,Package A支持:netcoreapp2.1

A 是一个 netStandard 库。 B 是一个 netStandard 库。

当我查看标签中的 A.csproj 文件时,我看到:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Description>The initial .net standard 2.0 offering of A</Description>
  </PropertyGroup>
</Project>

所以它似乎是针对 netStandard2.0(包括 netFramework 4.6.1 到 netCore 2.2?)

我是不是漏掉了一些简单的东西?

在使用 nu1202 和 netStandard2.0 进行谷歌搜索后——主要是想出了 A 是一个库而 B 是一个应用程序的场景,而不是像我的情况那样 B 是一个库——我提出:

我基于不同问题尝试过的事情

  1. 确认每个A/B项目的dotnet --version,都是3.1.402
  2. 已确认我的 Nuget Package Mangaer 版本相当新/最新:5.7.0
  3. 尝试使用包管理器控制台得到完全相同的结果。
  4. 清理并重建/包装 A.csproj
  5. 尝试将 A.nuspec 文件包含在 A.nupkg
  6. 的包源文件夹中
  7. 手动将 A.csproj 拉入项目以确认它可以添加为有效的项目参考,但这不是我想要解决此问题的方式。

我可能已经尝试了更多,但在这一点上,也许我应该问的问题是:是否可以在其他 netStandard 库中引用 netStandard 库?

我错过了什么?

我认为,最后,这可能是 VS 中的 Pack/Build(在构建时生成包)功能的问题。

我可以在 Nuget Package Explorer 中手动创建 A 库的包,该包将导入到 B 中就好了。

我关注了 this resource,但从未能够使用 Visual Studio 构建包,这使得现在很难修改 Nuget Package Manger 的版本,因为它是捆绑在一起的。我在5.7 版,5.6 可能会工作,因为它在 google 上被列为最新的稳定版本,但无论哪种方式 - 现在,我相信我只会手动制作我的包而不是尝试 auto-generate 他们

如果有人有更好的解决方案或想法解决这个问题,我会洗耳恭听。


编辑


事实证明,自动打包构建功能确实有效。

最后发生了什么:我征用了一些旧的 .net Core 库标题,将它们降级为 .net Standard,而不是保留 2 个并行副本。

已经有 A.1.0.0.nupkg 和 B.1.0.1.nupkg 的 .net 核心版本,但在不同的 nuget 包源中。

当我构建一个新的 .net 标准 A.1.0.0.nupkg 并将其放入本地源时,即使指向该本地源,nuget 也会尝试从 .. 安装 .net 核心.我猜是生产 nuget 包源的缓存副本(我清除了 50 次缓存,所以我不知道 nuget 是如何交叉这些电线的)。

通过制作 .net Standard A.1.0.1.nupkg 版本可以轻松复制,它可以正常导入,因为没有 .net core A.1.0.1.nupkg。然后,您可以重命名该包并在 Nuget 包资源管理器中还原它,但不更改内容,它将失败。当我不得不将 B.nupkg 的 .net Standard 版本从 1.0.0 升级到 1.0.2 从而比 B.nupkg.[=11 的 .net Core 版本更进一步时,这一点得到了证实。 =]

所以最后,自动打包功能没有被破坏(谢天谢地)。 Nuget Package Explorer 手动创建解决了我的问题,因为我在手动创建时勾选了版本。

我从没想过生产库包源会干扰本地包文件夹...