如何防止UWP项目在每个Visual Studio会话中恢复NuGet包?

时间:2015-12-02 15:20:40

标签: visual-studio-2015 nuget uwp

为了在Visual Studio 2015中开发通用Windows应用程序,有没有人注意到每次使用您的解决方案启动新的VS会话时,必须将NuGet包作为构建过程的第一步进行恢复?当没有对包配置进行任何更改时,这很烦人。因此,例如,如果您只需要快速重启VS并运行您的应用程序,它必须经历这20秒的NuGet恢复,这似乎是不必要的。

是否有人知道如何实现与桌面应用程序相同的行为(即,只有在缺少NuGet包时才会恢复它们等)?

2 个答案:

答案 0 :(得分:3)

这里的重要问题是:您是否希望削弱您的开发工作(通过在构建期间禁用包恢复,因为@ user5525674建议),并确定某些内容确实发生了变化(例如在您的源代码管理中)并且没有&#39 ;正确构建?只在Visual Studio会话的第一次构建时获得几秒钟?

这就是为什么它按原样运作的原因'。您可以阅读NuGet v3上的完整documentation和构建过程,但这是与问题相关的最重要部分:

  

恢复过程在构建本身之前运行,然后写出一个名为project.lock.json的新文件。该文件包括包图以及有关已还原包的其他有用信息。 MSBuild读取文件并将其转换为一组可以找到潜在引用的文件夹,然后将它们添加到内存中的项目树中。

     

此文件丢弃的位置 - 紧邻project.json

     

我应该检查 - 通常不会,该文件包含在Visual Studio中的默认.gitignore中,通常不会通过.gitignore或.tfignore包含在源代码管理中。

回顾一下:

  • 您的解决方案下不再有包文件夹,下载的包会缓存在您用户的AppData目录下。
  • 文件project.lock.json由还原过程生成并保存包引用(如果在VS选项下禁用还原过程并且此文件丢失或引用已更改,则这将使构建失败。
  • MSBuild将参考文件/文件夹保存在内存中。新的VS会话意味着必须在内存中重建此树,这需要20秒。

答案 1 :(得分:1)

在Visual Studio中,按照下面的工具菜单进行操作:

Tools -> Options -> NuGet Package Manager

然后,取消选中选项:

Automatically check for missing package during build in Visual Studio