簡體   English   中英

構建時的 NuGet 包還原極其緩慢(每個項目約 10 秒)

[英]NuGet Package Restore on build extremely slow (~10sec per project)

我在一個包含 12 個項目的解決方案中構建非常緩慢的問題,其中 7 個啟用了 NuGet 包還原。 診斷輸出通常顯示如下:

    [...]
    9 ms  ResolveProjectReferences                   1 calls
   18 ms  _CleanGetCurrentAndPriorFileWrites         1 calls
   32 ms  CoreClean                                  1 calls
   56 ms  ResolveAssemblyReferences                  1 calls
   77 ms  _CopyFilesMarkedCopyLocal                  1 calls
  400 ms  CoreCompile                                1 calls
 9082 ms  RestorePackages                            1 calls

這是典型的; 對於每個項目,RestorePackages 通常需要 9-10 秒,而對於 7 個項目,這會使我的構建時間增加了 70 秒。 構建相同解決方案的同事都沒有這個問題。 我已禁用所有擴展並且 Visual Studio (2012) 是最新的。

我已經在 CodePlex 上提交了一個問題,但我也想詢問這個知識淵博的社區,以防萬一有快速修復,並尋求幫助解決這個問題。

編輯:我完全刪除了 NuGet——RestorePackages 目標仍在執行,它仍然需要 10 秒。 我需要在 csproj 文件中手動設置RestorePackages = false以使其消失。

編輯 2:如果我注釋掉 NuGet.targets 中的 RestorePackages 任務中的內容,問題也會消失。 像這樣:

<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
    <!--<Exec Command="$(RestoreCommand)"
          Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />

    <Exec Command="$(RestoreCommand)"
          LogStandardErrorAsError="true"
          Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />-->
</Target>

如果我刪除 CheckPrerequisites 目標並沒有什么不同。

編輯:我安裝了 Windows 8.1,不再出現問題。

我不認為這是一個構建問題。 嘗試手動執行從命令行傳入的 NuGet.exe,您可能會發現它需要相同的時間。

過去,如果我的項目中有一些資源文件(圖像等),其中“復制到輸出目錄”設置為“始終復制”,我會一直遇到 NUGet 包下載內容的問題。 如果您有這個,請嘗試將其更改為“如果較新則復制”。

有時它可能會非常緩慢,就像昨天一樣。
您可以在此處查看服務的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM