.NET 6项目NuGet搜索无法显示.NET Standard 2.0类库问题咨询
问题根源分析
这个问题的核心是Visual Studio 2022的NuGet管理器UI兼容性筛选逻辑,与NuGet核心引擎的兼容性判断规则不一致,同时和类库包的元数据有关,并非NuGet源服务器的问题,具体拆解如下:
兼容性本身无问题:.NET Standard 2.0和.NET 6是完全兼容的,这也是你能通过NuGet控制台命令
Install-Package MyClassLibPackageId -Version 1.0.1成功安装的原因——NuGet核心引擎能正确识别两者的兼容性关系。VS NuGet UI的筛选缺陷:Visual Studio的NuGet管理器UI在执行兼容性筛选时,对仅以.NET Standard为唯一目标框架的包存在特殊处理逻辑。它没有完全同步NuGet核心引擎的兼容性判断规则,误将仅标注.NET Standard 2.0的包判定为与.NET 6项目不兼容,从而将其从搜索结果中过滤掉。
添加.NET Framework目标框架生效的原因:当你给类库项目添加任意.NET Framework版本作为额外目标框架后,生成的NuGet包会包含更多的兼容性元数据(针对.NET Framework的兼容标识)。VS的NuGet UI会识别到这些补充的元数据,进而正确判定该包与.NET 6项目兼容,自然就能在搜索结果中显示了。
排除NuGet源服务器问题:既然控制台命令能正常安装包,说明源服务器已经正确托管了你的类库包,且能被NuGet正常获取,所以源服务器不存在问题。
内容的提问来源于stack exchange,提问作者Carlos Siestrup
相关产品推荐
相关产品推荐

