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:\Users\Administrator\AppData\Roaming\NuGet\nuget.config文件,增加配置

重新安裝應用,依然無法解決。

4. webconfig的鍋?

在查看官方文檔時,返現文檔中提到

猜測是否web.config內存在dll的版本指定導致的,重新檢查web.config配置發現指定了配置:

刪掉此處指定的配置,重新運行網頁,黃頁消失。

問題產生原因:

1 在之前引用中引用了高版本的依賴項,nuget自動修改了webconfig的配置

2 在重新引用時,webconfig不會被重寫

3 添加nuget引用時,未指定安裝包的依賴規則

4 未仔細查看安裝包的依賴項版本

5 最好采用安裝包自動依賴項安裝,減少分別引入時的版本不匹配的問題

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM