如何在Visual Studio中启用NuGet包还原?
如何在Visual Studio中启用NuGet包还原?
Stack Overflow上有一个类似的帖子,但它并不能解决我的问题,可能是因为我使用的是Visual Studio 2015。
如何在VS2015中让“启用NuGet包还原”选项显示出来?
我选择了文件>新建项目,并创建了一个空的ASP.NET Web应用程序。我正在寻找这个菜单选项。
我应该提到,我已经在我的项目文件夹中寻找了任何现有的nuGet文件,但没有找到。
微软已经停止对VS2015中的“启用NuGet包还原”支持,因此您需要对旧解决方案进行一些手动更改,或者将该功能添加到新解决方案中。新功能在“NuGet Package Restore”中描述得非常好。NuGet Package Restore。
同时,此处还有一个现有项目的迁移指南(如前所述):NuGet Migration Guide。
升级时:
- 不要删除.nuget目录。
- 删除nuget.exe和nuget.targets文件。
- 留下nuget.config。
- 逐个手动清除每个项目文件中对NuGet目标的引用。提到的PowerShell脚本似乎产生了更多的破坏。
创建新项目时:
- 在Visual Studio 2015解决方案中,创建一个名为“.nuget”的解决方案目录。
- 在解决方案目录中(即.sln文件所在的位置)创建一个实际的目录,并将其命名为“.nuget”(注意解决方案目录与实际文件系统目录不同,尽管它们具有相同的名称)。
- 在.nuget目录中创建一个名为“nuget.config”的文件。
- 将“nuget.config”添加到步骤#2中创建的解决方案目录中。
- 在nuget.config文件中放置以下文本:
此配置文件将允许您将所有软件包整合到一个地方,因此您的文件系统上不会出现20个不同的相同软件包副本。相对路径将根据您的解决方案目录架构而改变,但它应该指向所有解决方案共同的目录。
在执行第五步之后,您需要重新启动Visual Studio。在您重新启动之前,Nuget不会识别更改。
最后,您可能需要使用“解决方案的Nuget包管理器”来卸载然后重新安装包。我不确定这是否是我运行的Powershell脚本的副作用,还是将NuGet重新启动的方法。一旦我完成了所有这些步骤,我的复杂构建架构就可以无缝地将新包下载到我从TFVC签出的项目中。
经历漫长的时间,但我终于在《从MSBuild集成方案迁移到自动包恢复》文档中找到了此文档,并能够使用其中描述的方法解决了问题。
- 从解决方案中删除
'.nuget'
目录。 - 从
.csproj
或.vbproj
文件中删除所有对nuget.targets
的引用。虽然官方未予支持,但该文件链接到一个PowerShell脚本,如果您有很多需要清理的项目,则可以使用该脚本。我手动进行了编辑,因此无法提供任何有关我的经验的反馈信息。
手动编辑文件时,您需要查找以下内容:
解决方案文件(.sln)
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F4AEBB8B-A367-424E-8B14-F611C9667A85}" ProjectSection(SolutionItems) = preProject .nuget\NuGet.Config = .nuget\NuGet.Config .nuget\NuGet.exe = .nuget\NuGet.exe .nuget\NuGet.targets = .nuget\NuGet.targets EndProjectSection EndProject
项目文件(.csproj /.vbproj)
This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.