nuget 包引用引发的问题

Posted dpwow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nuget 包引用引发的问题相关的知识,希望对你有一定的参考价值。

在以往项目中,添加引用包,采用了nuget的引入方式,今天进行了代码升级,遇到了一个nuget引用的问题,特此记录下。

之前项目中集成signalR时,使用nuget的方式引入了相关的signalR包,包引用配置信息如下

技术分享图片

1. 出现黄页

在另外的代码升级中,同样使用相同的packages.config进行还原,编译通过,运行时呈现了问题,一直出现StackExchange.Redis.StrongName依赖项版本错误的黄页。

经过对nuget包的依赖项的查看发现,signalR的redis组件的依赖项为

技术分享图片

使用的StackExchange.Redis.StrongName 的版本,最低为1.1.608

项目中同时使用了Microsoft.Web.RedisSessionStateProvider 2.23,他的依赖版本为

技术分享图片

发现依赖项不同,默认运行时加载的依赖项版本找不到会产生黄页。

2. 重新安装

参考nuget依赖项解析地址:https://docs.microsoft.com/zh-cn/nuget/consume-packages/dependency-resolution,发现可以指定依赖项解析规则:最低适用版本、可变版本、选择最近项和等距依赖项。

随即,重新卸载引用包,重新安装,然而在vs2017,nuget 2.80的版本下,安装选项不存在依赖项解析规则的选择:

技术分享图片

顿时不开心了,重新引用,虽然安装信息显示是采用的最低适用版本,但是运行时仍然显示黄页。

3. 修改nuget配置

没有办法,猜测是否nuget的配置是否错误,重新找到C:UsersAdministratorAppDataRoamingNuGet uget.config文件,增加配置

技术分享图片

重新安装应用,依然无法解决。

4. webconfig的锅?

在查看官方文档时,返现文档中提到

技术分享图片

猜测是否web.config内存在dll的版本指定导致的,重新检查web.config配置发现指定了配置:

技术分享图片

删掉此处指定的配置,重新运行网页,黄页消失。

问题产生原因:

1 在之前引用中引用了高版本的依赖项,nuget自动修改了webconfig的配置

2 在重新引用时,webconfig不会被重写

3 添加nuget引用时,未指定安装包的依赖规则

4 未仔细查看安装包的依赖项版本

5 最好采用安装包自动依赖项安装,减少分别引入时的版本不匹配的问题

 

 

以上是关于nuget 包引用引发的问题的主要内容,如果未能解决你的问题,请参考以下文章

nuget 包与其引用的 nuget 包之间的不同版本

使用 FHIR nuget 包通过引用查找包中的资源

此项目引用此计算机上缺少的 NuGet 包。

无痛本地开发,同时还引用 NuGet 包

此项目引用此计算机上缺少的 NuGet 包

创建大量非必需项目引用的NuGet包