无法在Visual Studio for Mac和&amp ;;中恢复nuget包。 dotnet核心与慢(玻利维亚)互联网

时间:2017-09-09 17:41:00

标签: visual-studio nuget .net-core nuget-package-restore visual-studio-mac

我在玻利维亚的dotnet核心2.0项目中恢复包的问题。回到荷兰的家里我恢复包装没有问题,但是它在这里打破了。

我收到很多错误,例如:

Failed to download package 'System.Linq.4.1.0' from
'https://api.nuget.org/v3-flatcontainer/system.linq/4.1.0/system.linq.4.1.0.nupkg'.
An error occurred while sending the request
  Error: SecureChannelFailure (Unable to write data to the transport connection: Cannot access a disposed object.
  Object name: 'System.Net.Sockets.Socket'..)
  Unable to write data to the transport connection: Cannot access a disposed object.
  Object name: 'System.Net.Sockets.Socket'..
  Cannot access a disposed object.
  Object name: 'System.Net.Sockets.Socket'.
Unable to load package 'System.Linq'.

当我尝试忘记此文件时,我的速度介于400 KB / s和3 MB / s之间。

我认为它可以并行恢复软件包并导致宿舍互联网被充分利用?我在不同的旅馆/咖啡馆尝试过,我也遇到了同样的问题。当我远程桌面进入荷兰的家庭服务器并恢复同一项目的软件包时,它一切顺利。

我有什么选择?我试过谷歌搜索这个问题一段时间了,但我还没有找到解决方案。

谢谢!

Jorik

4 个答案:

答案 0 :(得分:5)

我无法解决网络问题,但您可以减少Visual Studio for Mac下载的NuGet包的数量,作为一种可能的解决方法。可以使用NuGet fallback文件夹对.NET Core 2.0项目执行此操作:

/usr/local/share/dotnet/sdk/NuGetFallbackFolder/

fallback文件夹包含许多默认情况下由.NET Core 2.0使用的NuGet包。如果安装.NET Core SDK,则应创建此文件夹。

使用上面的文件夹可以防止下载很多NuGet包。

您可以直接将其添加为NuGet包源,也可以编辑〜/ .config / NuGet / NuGet.Config文件并添加回退文件夹,如下所示:

或者你可以在〜/ .config / NuGet / NuGet.Config文件中添加一个显式的回退文件夹:

<fallbackPackageFolders>
  <add key="DotNetCore2FallbackFolder" value="/usr/local/share/dotnet/sdk/NuGetFallbackFolder" />
</fallbackPackageFolders>

需要重新启动Visual Studio for Mac。还要检查该文件夹是否存在。

请注意,由于另一个错误,Visual Studio for Mac在还原.NET Core项目时仍会下载一些NuGet包。

答案 1 :(得分:2)

  

我有什么选择?我试过谷歌搜索这个问题一段时间了,但我还没有找到解决方案。

显然,出现这种错误的原因是网络问题,但正如Matt所说,我们无法为网络问题提供太多帮助。我想提供另一种解决方法:

由于nuget默认从本地包缓存中恢复包,您可以在荷兰的家庭服务器中成功恢复包:

您可以从家庭服务器复制这些软件包,并将它们添加到本地软件包缓存C:\Users\username\.nuget\packages中,并将其添加到您在玻利维亚的计算机上。

希望这有帮助。

答案 2 :(得分:0)

您还可以尝试禁用与Nuget参数-DisableParallelProcessing并行还原多个包。

见这里:https://docs.microsoft.com/en-us/nuget/tools/cli-ref-restore

答案 3 :(得分:0)

这很可能是Mono运行时错误,在这里报告: https://github.com/mono/mono/issues/19893

解决方法的确是通过将{{1}}属性传递给MSBuild来禁用并行还原。