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 包引用引发的问题的主要内容,如果未能解决你的问题,请参考以下文章