0

我有问题恢复在这里玻利维亚dotnet核心2.0项目的软件包。在荷兰回家我在恢复包裹方面没有任何问题,但是在这里休息了。无法恢复在Visual Studio for Mac和dotnet核心与慢(玻利维亚)互联网nuget包

我得到了很多的错误,如:

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'. 

当我试图给wget这个文件我400 KB/s和3 MB /秒之间得到我。

我在想它是nuget恢复并行的包,并导致旅馆互联网被充分使用?我已经在不同的旅馆/咖啡厅尝试过了,我也遇到了同样的问题。当我将远程桌面连接到荷兰的家用服务器并恢复同一项目的软件包时,它一切正常。

我在这里有什么选择?我尝试了一会儿搜索这个问题,但我还没有找到解决方案。

谢谢!

Jorik

回答

5

我无法与网络连接问题帮助,但你可以减少正在由Visual Studio下载的Mac作为一个可能的解决方法中的NuGet包的数量。这可以为.NET 2.0的核心项目使用的NuGet后备文件夹来完成:

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

回退文件夹包含了默认情况下使用.NET 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包。

+0

您不能将本地程序包缓存用作.NetCore项目的源代码吗?即'〜/ .nuget/packages'(这对非NetCore项目来说很好) – SushiHangover

+0

本地包缓存用于.NET Core项目。但是,如果NuGet包在缓存中可用,那么NuGet不需要上线 - 这似乎是问题的原因。 –

+0

谢谢...我必须仔细检查最新的VS4M,因为我一直必须禁用默认回购('nuget.org')并启用我添加的本地文件源(〜/ .nuget/packages)来防止在线检查和最终超时错误(我有一个*真的*高延迟网络连接,导致在恢复期间VS4M的巨大痛苦(崩溃,无限挂起,无法“中止”恢复,等等......) – SushiHangover

2

我在这里有什么选择?我尝试了一会儿搜索这个问题,但我还没有找到解决方案。

显然,这个错误的原因是网络问题,但是,正如马特所说的,我们无法为网络问题提供很多帮助。我想提供另一种解决办法:

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

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

希望这会有所帮助。