在不同的netstandard2.0库NU1202

问题描述

我目前正在努力处理看似简单的事情,但是我无法找到遇到类似问题的任何人。

我正在将某些库转换为netStandard,而一个库则依赖于另一个库。我们称它们为A和B。

A可以很好地编译为netStandard2.0库,它是根据目录中的dotnet --version使用3.1 SDK构建的。 nupkg内置在Release文件夹中,我将其移至本地软件包源以在我的盒子上进行测试。

B也是一个netStandard2.0类库。它需要A,但是在NuGet Package Manager for B内导航到A的nupkg,然后单击install会产生一个奇怪的错误

NU1202 A与netStandard2.0不兼容,程序包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. 试图使用Package Manager Console获得完全相同的结果。
  4. 清洁和重建/包装A.csproj
  5. 尝试将A.nuspec文件与A.nupkg一起包含在Package Source文件夹中
  6. 将A.csproj手动拉入项目,以确认可以将其添加为有效的项目参考,但这不是我要解决的问题。

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

我想念什么?

解决方法

最后,我相信这可能是VS中的打包/构建(在生成时带有生成包)功能的问题。

我能够在Nuget软件包资源管理器中手动创建A库的软件包,该软件包会很好地导入到B中。

我遵循了this resource,但是由于无法捆绑使用Visual Studio,因此由于捆绑了Nuget Package Manger,因此如今很难对其进行修改。我的版本为5.7,可能是是5.6可以正常工作,因为它被列为google上最新的稳定版本,但是无论哪种方式-现在,我相信我只是手动制作我的软件包,而不是尝试自动生成它们。

如果有人有更好的解决方案或关于如何解决此问题的想法,我将不知所措。


编辑


事实证明,自动打包构建功能确实起作用。

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

已经有一个.net核心版本的A.1.0.0.nupkg和一个B.1.0.1.nupkg,但是使用的是不同的nuget软件包。

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

通过创建版本.net Standard A.1.0.1.nupkg可以轻松复制,由于没有.net核心A.1.0.1.nupkg,它可以很好地导入。然后,您可以重命名该程序包并在Nuget程序包资源管理器中对其进行还原,但不能更改其内容,否则它将失败。当我不得不将B.nupkg的.net标准版本的版本从1.0.0逐步升级到1.0.2时,这一点得到了证实。比B.nupkg的.net Core版本更进一步。

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

我永远都不会期望生产库软件包的源代码会干扰本地软件包文件夹...