【问题标题】:Nuget - Object reference not set to an instance of an objectNuget - 对象引用未设置为对象的实例
【发布时间】:2015-10-21 21:18:18
【问题描述】:

我在 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 不能正常工作。有时有些包没有问题,有时有些包安装有问题,但没有原因!!!唯一的错误是我上面所说的。但我认为这不是 vs 或项目类型的问题,因为我在 vs 之外的 nuget 控制台也遇到了同样的问题。

标签: c# nuget visual-studio-2015 nuget-package


【解决方案1】:

这是使用 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 包。

【讨论】:

    【解决方案2】:

    Visual Studio 2022 中仍然存在同样的问题。解决方法:

    1. 导航到 C:\Users\AppData\Roaming\NuGet // 记住 AppData 是一个隐藏文件夹,因此您必须让 Windows 显示隐藏文件和文件夹才能看到它
    2. 在记事本中打开 NuGet.Config(或任何可以让您编辑它的工具)
    3. 在“packageSources”部分中,查找以下行:

    添加键="nuget.org" 值="https://api.nuget.org/v3/index.json" 协议版本="3"

    并删除'protocolVersion="3"'

    1. 保存文件并重新启动 Visual Studio 2022

    【讨论】:

      【解决方案3】:

      当我过去遇到 Nuget 问题时,这些是我已经完成的步骤:

      1) 使用 Nuget 包管理器从项目中删除

      2) 清理并构建(您将遇到错误,因为您不再拥有参考资料 2) 确保软件包已从您的 packages.config 中删除(如果没有,请删除并重复第 2 步)

      3) 确保 .dll 已从您的 bin 文件夹中删除(如果没有,请删除并重复第 2 步)

      4) 重新添加包并重建。确保将包添加到 packages.config(具有适当的版本)并将 .dll 添加回 bin 文件夹(具有适当的版本)。

      【讨论】:

      • 问题是我从来没有安装它们,没有packages.config,也没有另一个程序包!我的解决方案中有 7 个项目,每个项目都有不同的包。
      • 避免问题4),您可以使用Project Dependency Browser (projectdependencybrowser.org),它可以分析C#项目中的NuGet/DLL引用问题...
      【解决方案4】:

      我正在运行 VS 2017,但在“dotnet restore”任务期间 TFS 构建服务器出现此错误。问题是我们有一个内部本地文件共享,但 nuget.config 该条目的 protocolVersion="3"。删除该属性后,构建成功。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-20
        • 2012-06-15
        相关资源
        最近更新 更多