我在玻利维亚恢复dotnet core 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 之间。
我认为是 nuget 并行恢复软件包,导致旅馆互联网被充分利用?我在这里的不同旅馆/咖啡馆尝试过,我遇到了同样的问题。当我将远程桌面远程桌面连接到我在荷兰的家庭服务器并为同一项目恢复包时,一切进展顺利。
我在这里有什么选择?我尝试在谷歌上搜索这个问题一段时间,但我还没有找到解决方案。
谢谢!
约里克
我无法帮助解决网络问题,但您可以减少Visual Studio for Mac下载的NuGet包的数量,作为一种可能的解决方法。这可以通过使用 NuGet 回退文件夹为 .NET Core 2.0 项目完成:
/usr/local/share/dotnet/sdk/NuGetFallbackFolder/
回退文件夹包含许多 .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 包。
我在这里有什么选择?我尝试在谷歌上搜索这个问题一段时间,但我还没有找到解决方案。
显然,此错误的原因是网络问题,但是,正如Matt所说,我们无法为您提供太多有关网络问题的帮助。我想提供另一种解决方法:
由于 nuget 默认从本地包缓存还原包,并且你可以在荷兰的主服务器中成功还原包:
您可以从主服务器复制这些包,并将它们添加到本地包缓存中,C:Usersusername.nugetpackages
到玻利维亚的计算机上。
希望这有帮助。
您还可以尝试禁用与 Nuget 参数 -DisableParallelProcessing 并行还原多个包。
看这里: https://learn.microsoft.com/en-us/nuget/tools/cli-ref-restore
这很可能是一个 Mono 运行时错误,报告如下: https://github.com/mono/mono/issues/19893
解决方法实际上是通过将/p:RestoreDisableParallel=true
属性传递给 MSBuild 来禁用并行还原。