Nuget - 对象引用未设置为对象的实例
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 ==========
当我过去遇到 Nuget 问题时,这些是我完成的步骤:
1) 使用 Nuget 包管理器从项目中移除
2) Clean and Build(你会遇到错误,因为你不再有引用
2) 确保包已从您的 packages.config 中删除(如果没有,请删除并重复步骤 2)
3) 确保 .dll 已从您的 bin 文件夹中删除(如果没有,请删除并重复步骤 2)
4) 重新添加包并重建。确保将软件包添加到 packages.config(具有适当的版本)并将 .dll 添加回 bin 文件夹(具有适当的版本)。
这是使用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 包。
我是 运行 VS 2017,但在 "dotnet restore" 任务期间 TFS 构建服务器出现此错误。问题是我们有一个内部本地文件共享,但是 nuget.config 该条目的 protocolVersion="3"。删除 属性 后,构建成功。
同样的问题在Visual Studio2022年仍然存在。解决方案:
- Navigate to C:\Users
\AppData\Roaming\NuGet // 记住 AppData 是一个隐藏文件夹,所以你必须 Windows 显示隐藏的文件和文件夹才能看到它
- 在记事本中打开 NuGet.Config(或任何可以编辑的工具)
- 在“packageSources”部分,查找以下行:
add key="nuget.org" value="https://api.nuget.org/v3/index.json"
protocolVersion="3"
并删除 'protocolVersion="3"'
- 保存文件并重启Visual Studio2022
我的问题发生在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"
。
我在 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 ==========
当我过去遇到 Nuget 问题时,这些是我完成的步骤:
1) 使用 Nuget 包管理器从项目中移除
2) Clean and Build(你会遇到错误,因为你不再有引用 2) 确保包已从您的 packages.config 中删除(如果没有,请删除并重复步骤 2)
3) 确保 .dll 已从您的 bin 文件夹中删除(如果没有,请删除并重复步骤 2)
4) 重新添加包并重建。确保将软件包添加到 packages.config(具有适当的版本)并将 .dll 添加回 bin 文件夹(具有适当的版本)。
这是使用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 包。
我是 运行 VS 2017,但在 "dotnet restore" 任务期间 TFS 构建服务器出现此错误。问题是我们有一个内部本地文件共享,但是 nuget.config 该条目的 protocolVersion="3"。删除 属性 后,构建成功。
同样的问题在Visual Studio2022年仍然存在。解决方案:
- Navigate to C:\Users
\AppData\Roaming\NuGet // 记住 AppData 是一个隐藏文件夹,所以你必须 Windows 显示隐藏的文件和文件夹才能看到它 - 在记事本中打开 NuGet.Config(或任何可以编辑的工具)
- 在“packageSources”部分,查找以下行:
add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3"
并删除 'protocolVersion="3"'
- 保存文件并重启Visual Studio2022
我的问题发生在
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"
。