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
?
我该如何解决这个问题?
环境详情:
- 使用的 NuGet 产品(包管理器控制台):包管理器控制台主机版本
5.3.1.6268
- VS 版本(如果适用):Microsoft Visual Studio Community 2019 Version
16.3.8
- OS版本(即win10 v1607(14393.321)):Windows10企业版:
1809
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
避免之前的缓存影响当前项目。
希望以上对您有所帮助:)
背景:
我已经为 .net 核心创建了一个 class 库(目标 v2.2
),我也有一个 .net 核心应用程序(目标 v2.2
)。
我正在尝试将库导出为 nuget 包并将其安装到我的应用程序中。 这是我的库的依赖项
我可以将它导出为 nuget 包,现在我将它存储在本地 nuget 存储库中。
但是当我尝试在我的应用程序中安装这个库包时,由于 Microsoft.Extensions.Logging
的包版本冲突,它没有安装。这是包管理器控制台输出。
问题:
我已经为 Microsoft.Extensions.Logging
指定了确切的版本,即 [2.2.0]
,因为我们可以在显示我的库的依赖性的屏幕截图中确认,那么为什么它被解析为版本 3.0.0
?
我该如何解决这个问题?
环境详情:
- 使用的 NuGet 产品(包管理器控制台):包管理器控制台主机版本
5.3.1.6268
- VS 版本(如果适用):Microsoft Visual Studio Community 2019 Version
16.3.8
- OS版本(即win10 v1607(14393.321)):Windows10企业版:
1809
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
避免之前的缓存影响当前项目。
希望以上对您有所帮助:)