nuget 包引用引發的問題

2022-01-15 18:21:07 字數 1457 閱讀 7305

在以往專案中,新增引用包,採用了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. 重新安裝

隨即,重新解除安裝引用包,重新安裝,然而在vs2017,nuget 2.80的版本下,安裝選項不存在依賴項解析規則的選擇:

頓時不開心了,重新引用,雖然安裝資訊顯示是採用的最低適用版本,但是執行時仍然顯示黃頁。

3. 修改nuget配置

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

4. webconfig的鍋?

在檢視官方文件時,返現文件中提到

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

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

問題產生原因:

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

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

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

4 未仔細檢視安裝包的依賴項版本

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

NuGet包引用依賴問題

如a包需要引用b包,然後在專案中安裝a包時,自動把b包也裝上。在nuget命令列打包的時候,如果是指定專案的csproj檔案進行打包的,都只能打包當前專案的dll,那麼如果使用了第三方的dll而沒有使用nuget進行安裝,往往不會把這些dll打包進去,解決方法如下 1 在要打包nuget的專案上,用...

NuGet包引用依賴問題

如a包需要引用b包,然後在專案中安裝a包時,自動把b包也裝上。在nuget命令列打包的時候,如果是指定專案的csproj檔案進行打包的,都只能打包當前專案的dll,那麼如果使用了第三方的dll而沒有使用nuget進行安裝,往往不會把這些dll打包進去,解決方法如下 1 在要打包nuget的專案上,用...

使用NuGet增加常見包引用

nuget是乙個能夠自動新增最新開源引用庫的vs外掛程式,使用它能夠簡化我們平常 新增引用 查詢引用 新增引用 的繁瑣步驟,取而代之的是乙個命令列就可以了。nuget通過的命令列的方式或者圖形化介面的方式來獲取包引用。nuget的命令並不多也很簡單,常見的如下 install package 安裝包...