and*_*rav 5 c# msbuild nuget visual-studio-2012 nuget-package-restore
我在解决方案中遇到构建速度非常慢的问题,该解决方案有 12 个项目,其中 7 个项目启用了 NuGet Package Restore。诊断输出通常显示以下内容:
[...]
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
Run Code Online (Sandbox Code Playgroud)
这是典型的;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>
Run Code Online (Sandbox Code Playgroud)
如果我删除 CheckPrecessions 目标,这不会产生任何影响。
编辑:我安装了Windows 8.1,问题不再出现。
我不认为这是构建问题。尝试手动执行从命令行传入的 NuGet.exe,您可能会发现它需要相同的时间。
过去,如果我的项目中有一些资源文件(图像等),其中“复制到输出目录”设置为“始终复制”,我就会一直遇到 NUGet 包下载内容的问题。如果您有此内容,请尝试将其更改为“如果较新则复制”。
| 归档时间: |
|
| 查看次数: |
8725 次 |
| 最近记录: |