无法使用慢速(玻利维亚)互联网恢复Visual Studio for Mac和dotnet核心中的nuget包

Jor*_*rik 3 visual-studio nuget nuget-package-restore .net-core 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'.
Run Code Online (Sandbox Code Playgroud)

当我尝试wget这个文件时,我的速度在400 KB/s到3 MB/s之间.

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

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

谢谢!

Jorik

Mat*_*ard 6

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

/usr/local/share/dotnet/sdk/NuGetFallbackFolder/
Run Code Online (Sandbox Code Playgroud)

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

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

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

或者,您可以在〜/ .config/NuGet/NuGet.Config文件中添加显式回退文件夹:

<fallbackPackageFolders>
  <add key="DotNetCore2FallbackFolder" value="/usr/local/share/dotnet/sdk/NuGetFallbackFolder" />
</fallbackPackageFolders>
Run Code Online (Sandbox Code Playgroud)

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

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