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到您的玻利維亞機器。

希望這會有所幫助。