簡體   English   中英

Nuget 不更新 ASP.NET 網站中的包引用

[英]Nuget does not update Package References in ASP.NET website

關於:我有一個 ASP.NET網站(不是 Web 項目),解決方案中有 3 個類庫項目。 早些時候我使用SVN,但現在使用Git進行源代碼管理。 我已經在計算機(用作服務器)上本地安裝了 git,並將其用於合並來自其他開發人員的源代碼。 另外,我正在使用 Visual Studio 2015 社區版,它提供了使用 git 的工具。

問題:從主存儲庫克隆項目后,我構建項目以運行它。 構建項目會顯示一個對話框,提示“包還原正在進行中”。 此過程會創建一個名為“Packages”的文件夾,該文件夾包含 packages.config 文件中列出的每個包。 但是恢復完成后,項目拋出如下異常:

每個包都會顯示此異常(此處為 Autofac)。

找不到類型或命名空間名稱“Autofac”(您是否缺少 using 指令或程序集引用?)

變通方法為了解決這個問題,我需要卸載每個包並重新安裝它,問題就解決了。 這件事我需要為每台開發人員機器一次又一次地做,這也令人沮喪和耗時。

有沒有人在 ASP.NET 中使用 Nuget、git 和網站時遇到過同樣的問題。

我以前遇到過這樣的問題。 就我而言,原因是我更改了項目路徑(將項目移動到另一個目錄),並且包目錄的路徑(包含NuGet包)存儲在舊路徑的csproj文件中,即VS無法還原 NuGet 包。 解決方案是手動編輯 csproj 並使其引用正確的新包路徑。

如果這對您不起作用,您仍然可以使用您的解決方法,但為簡單起見,請使用以下 PowerShell 命令(在 NuGet 控制台中):

Update-Package -reinstall -Project Your.Project.Name

注意:項目名稱不包含 csproj 擴展名,只包含項目名稱

最好不要將第三方包放入源代碼管理中。 它使您的存儲庫膨脹(即使在大型 Web 應用程序中,外部包的大小也會大大超過您的代碼)。

如果 NuGet 包還原速度較慢,您可以考慮使用本地緩存(這可以像共享文件夾一樣簡單)或更好的 Internet 連接。

也就是說,每台機器應該只遇到一次這個問題。 在下載軟件包時,您可以向新團隊成員提供設計概覽……

確保您的所有項目都使用相同的目標框架,如果不這樣做,您通常會收到type or namespace [name] could not be found警告。

為此,請右鍵單擊解決方案資源管理器中的每個項目 > 屬性 > 應用程序選項卡 > 目標框架。 它們應該全部相同,否則您的項目中的引用之間會出現不兼容。 這是一個關於此的問題,希望這會有所幫助。

主要原因是packages.config 文件中沒有Autofac 引用。 當您在屏幕上看到“恢復包”消息框時,這意味着 nuget 包管理器正在嘗試安裝包文件夾中缺少的所有包。 嘗試執行此步驟:

  • 在 Visual Studio 解決方案資源管理器中選擇項目並通過上下文菜單選擇卸載項目
  • 通過上下文菜單卸載項目后,選擇編輯您的項目
  • 轉到部分組並找到您 Autofac 參考部分
  • 如果 HintPath 看起來不像 ..\\packages\\Autofac.4.1.1\\lib\\net45\\Autofac.dll (Actual for 4.1.1 version) 刪除 Autofac 參考項
  • 保存 csproj 文件並重新加載項目
  • 通過 NuGet 包管理器安裝 Autofac
  • 提交並推送更改到 git 存儲庫

VS 2019 也有同樣的問題。在 ASP.NET 中,包是通過 bin 文件夾中出現的 .refresh 文件更新的。 如果這些沒有被檢入 Git,它們就不會被復制到你的克隆復制品中。

我為我的所有包 dll 添加了 .refresh 文件,確保 .refresh 文件中的版本和路徑正確,現在一切都按預期更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM