我在玻利维亚的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
答案 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来禁用并行还原。