如何在Visual Studio中启用NuGet包还原?

19 浏览
0 Comments

如何在Visual Studio中启用NuGet包还原?

Stack Overflow上有一个类似的帖子,但它并不能解决我的问题,可能是因为我使用的是Visual Studio 2015。

如何在VS2015中让“启用NuGet包还原”选项显示出来?

我选择了文件>新建项目,并创建了一个空的ASP.NET Web应用程序。我正在寻找这个菜单选项。

\"enter

我应该提到,我已经在我的项目文件夹中寻找了任何现有的nuGet文件,但没有找到。

admin 更改状态以发布 2023年5月24日
0
0 Comments

微软已经停止对VS2015中的“启用NuGet包还原”支持,因此您需要对旧解决方案进行一些手动更改,或者将该功能添加到新解决方案中。新功能在“NuGet Package Restore”中描述得非常好。NuGet Package Restore

同时,此处还有一个现有项目的迁移指南(如前所述):NuGet Migration Guide。

升级时:

  1. 不要删除.nuget目录。
  2. 删除nuget.exe和nuget.targets文件。
  3. 留下nuget.config。
  4. 逐个手动清除每个项目文件中对NuGet目标的引用。提到的PowerShell脚本似乎产生了更多的破坏。

创建新项目时:

  1. 在Visual Studio 2015解决方案中,创建一个名为“.nuget”的解决方案目录。
  2. 在解决方案目录中(即.sln文件所在的位置)创建一个实际的目录,并将其命名为“.nuget”(注意解决方案目录与实际文件系统目录不同,尽管它们具有相同的名称)。
  3. 在.nuget目录中创建一个名为“nuget.config”的文件。
  4. 将“nuget.config”添加到步骤#2中创建的解决方案目录中。
  5. 在nuget.config文件中放置以下文本:
  6. 
     
      
        
      
      
        
      
    
    

此配置文件将允许您将所有软件包整合到一个地方,因此您的文件系统上不会出现20个不同的相同软件包副本。相对路径将根据您的解决方案目录架构而改变,但它应该指向所有解决方案共同的目录。

在执行第五步之后,您需要重新启动Visual Studio。在您重新启动之前,Nuget不会识别更改。

最后,您可能需要使用“解决方案的Nuget包管理器”来卸载然后重新安装包。我不确定这是否是我运行的Powershell脚本的副作用,还是将NuGet重新启动的方法。一旦我完成了所有这些步骤,我的复杂构建架构就可以无缝地将新包下载到我从TFVC签出的项目中。

0
0 Comments

经历漫长的时间,但我终于在《从MSBuild集成方案迁移到自动包恢复》文档中找到了此文档,并能够使用其中描述的方法解决了问题。

  1. 从解决方案中删除'.nuget'目录。
  2. .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}.
    
    
  

0