nuget 没有使用 nuget 包中为 Microsoft.Extensions.Logging 指定的内容解析依赖关系

nuget not resolving dependency using what specified in nuget package for Microsoft.Extensions.Logging

背景:

我已经为 .net 核心创建了一个 class 库(目标 v2.2),我也有一个 .net 核心应用程序(目标 v2.2)。

我正在尝试将库导出为 nuget 包并将其安装到我的应用程序中。 这是我的库的依赖项

我可以将它导出为 nuget 包,现在我将它存储在本地 nuget 存储库中。 但是当我尝试在我的应用程序中安装这个库包时,由于 Microsoft.Extensions.Logging 的包版本冲突,它没有安装。这是包管理器控制台输出。

问题:

我已经为 Microsoft.Extensions.Logging 指定了确切的版本,即 [2.2.0],因为我们可以在显示我的库的依赖性的屏幕截图中确认,那么为什么它被解析为版本 3.0.0? 我该如何解决这个问题?

环境详情:

How could I resolve this issue?

要解决您身边的奇怪行为,您应该 clean the nuget cache 在当前项目中安装该包之前。

(为了确保缓存被清理干净,我建议你去%userprofile%\.nuget\packages检查Packages文件夹中是否存在Com.lib文件夹)

I have specified the exact version for Microsoft.Extensions.Logging i.e. [2.2.0] as we could confirm that in the screenshot showing dependency for my library, then why it's getting resolved to version 3.0.0?

我认为您要安装的那个(Com.Mylib) 不是您打包的第一个。我的意思是您实际上可以构建和打包几个不同的 Com.Mylib 包,其中包含不同的内容。他们的名字都是Com.lib.1.0.0.nupkg

Nuget 将所有 nuget 缓存存储在 %userprofile%\.nuget\packages 中。因此,如果我曾经在任何项目中安装一个 PackageA。 PackageA 的缓存存储在那里。如果我打开一个新项目试图安装具有相同版本 (1.0.0) 的 PackageA,它 实际上 从缓存中安装那个。所以我们会遇到这种奇怪的行为:

Nuget 可以识别 Com.lib 包依赖于其他 2.2.0 包。但是当它尝试安装该包时,它发现该包已存在于缓存中。然后他尝试从缓存中安装一个,我猜缓存中的内容与你最新的不同,然后问题就出现了。

建议:

1.When 在本地开发,使用项目引用而不是 Nuget 包。

2.If每次打包后都需要测试nuget包,请确保包版本增加了。(1.0.0=>1.0.1=>1.0.3...或beta -1.0.12,预览-xxx)

3.If您有特殊原因使用相同的1.0.0版本,请clean the cache避免之前的缓存影响当前项目。

希望以上对您有所帮助:)