[英]Nuget - Object reference not set to an instance of an object
我在 vs 2015 中遇到了 nuget 包管理器的問題。像 Unity 這樣的一些包已經安裝沒有問題。 某些軟件包(例如 EF)在安裝時出現問題。 一些像 Automapper 這樣的包也有同樣的問題,但是當我安裝這個包的另一個版本時,它安裝得很好。
這是輸出:
System.NullReferenceException: Object reference not set to an instance of an object.
at NuGet.Protocol.Core.v3.GlobalPackagesFolderUtility.<AddPackageAsync>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at NuGet.Protocol.Core.v3.DownloadResourceV3.<GetDownloadResourceResultAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.PackageManagement.PackageDownloader.<GetDownloadResourceResultAsync>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at NuGet.PackageManagement.NuGetPackageManager.<ExecuteNuGetProjectActionsAsync>d__42.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at NuGet.PackageManagement.NuGetPackageManager.<ExecuteNuGetProjectActionsAsync>d__42.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.PackageManagement.UI.UIActionEngine.<ExecuteActionsAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.PackageManagement.UI.UIActionEngine.<PerformActionAsync>d__3.MoveNext()
========== Finished ==========
使用 Visual Studio 2015 中使用的新協議(版本 3)nuget 是一個常見問題。它與多個 nuget 包一起使用,例如 Microsoft.Owin 3.0.1。 要解決此問題,請訪問:
C:\Users\<your user name>\AppData\Roaming\NuGet
並編輯 XML 配置文件,注釋協議 3 的行:
<!-- add key = "nuget.org" value = "https://api.nuget.org/v3/index.json" protocolVersion = "3" /-->
<add key = "nuget.org" value = "https://www.nuget.org/api/v2/" />
版本 2 的維護設置。保存並重新啟動 Visual Studio 2015。您現在應該毫無問題地恢復 nuget 包。
在 Visual Studio 2022 中仍然存在同樣的問題。解決方法:
添加 key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3"
並刪除 'protocolVersion="3"'
當我過去遇到 Nuget 問題時,這些是我已經完成的步驟:
1) 使用 Nuget 包管理器從項目中刪除
2) Clean and Build (你會有錯誤,因為你不再有引用 2) 確保從你的 packages.config 中刪除包(如果沒有,刪除並重復步驟 2)
3) 確保 .dll 已從您的 bin 文件夾中刪除(如果沒有,請刪除並重復步驟 2)
4)重新添加包並重建。 確保將包添加到 packages.config(具有適當的版本),並將 .dlls 添加回 bin 文件夾(具有適當的版本)。
我正在運行 VS 2017,但在“dotnet restore”任務期間 TFS 構建服務器出現此錯誤。 問題是我們有一個內部本地文件共享,但 nuget.config 該條目的 protocolVersion="3"。 刪除該屬性后,構建成功。
我的問題發生在NuGet.Config
(他NuGet.Config
文件路徑: C:\Users\<UserName>\AppData\Roaming\NuGet
)
原因:工具-> NuGet 包管理器->包管理設置->包源->
nuget.org=https://api.nuget.org/v3/index.json
默認包源有protocolVersion="3"
屬性,但我修改為我的離線包源,同時新建一個包源:
nuget.ort=https://api.nuget.org/v3/index.json
新的包源沒有屬性protocolVersion="3"
,所以無論是在線還是離線我總是無法安裝包。
解決方案:將ProtocalVersion="3"
添加到
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3"/>
並在我的離線包源中刪除ProtocalVersion="3"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.