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 最好采用安装包自动依赖项安装,减少分别引入时的版本不匹配的问题

 

原文地址:https://www.cnblogs.com/dpwow/p/9629061.html