关于堆栈有一个类似的帖子,但它可能对我的问题没有帮助,因为我使用的是Visual Studio 2015。
如何在VS2015中显示“启用NuGet包恢复”选项?
我选择文件>新项目,并创建一个空ASP。NET Web应用程序。我在找这个菜单项。
我应该提到,我已经在我的项目文件夹中寻找任何预先存在的nuGet文件,没有。
关于堆栈有一个类似的帖子,但它可能对我的问题没有帮助,因为我使用的是Visual Studio 2015。
如何在VS2015中显示“启用NuGet包恢复”选项?
我选择文件>新项目,并创建一个空ASP。NET Web应用程序。我在找这个菜单项。
我应该提到,我已经在我的项目文件夹中寻找任何预先存在的nuGet文件,没有。
当前回答
在尝试构建示例项目gplus-quickstart-csharp-master时,我也遇到了同样的问题。
我仔细查看了错误信息,并从克服这个错误中找到了一个解决方案,希望这将有所帮助。
右键单击解决方案文件并在windows资源管理器中打开。 用NuGet复制. NuGet文件夹。Config, NuGet.exe, NuGet。目标(下载链接或简单地从其他项目复制并替换) 尝试重新构建解决方案。
享受! !
其他回答
包管理器控制台(Visual Studio, Tools > NuGet包管理器>包管理器控制台):运行Update-Package -重装-ProjectName命令,其中是在解决方案资源管理器中显示的受影响项目的名称。使用Update-Package -重装自行恢复解决方案中的所有包。看到更新包。如果需要,还可以重新安装单个包。
从https://learn.microsoft.com/en-us/nuget/quickstart/restore
微软已经在VS2015中放弃了对“启用NuGet包恢复”的支持,你需要做一些手动更改来迁移旧的解决方案或将该功能添加到新的解决方案中。这个新特性在NuGet包还原中有很好的描述。
这里还有一个针对现有项目的迁移指南(如前所述):NuGet迁移指南
当升级:
不要删除。nuget目录。 删除nuget.exe和nuget.exe。目标文件。 保留nuget.config。 手动清除每个项目文件中对NuGet目标的任何引用。上面提到的Powershell脚本似乎弊大于利。
创建新项目时:
In your Visual Studio 2015 solution, create a Solution Directory called .nuget. Create an actual directory of the solution directory (where the .sln file lives) and call it .nuget (note that the solution directory is not the same as the actual file system directory even though they have the same name). Create a file in the .nuget directory called nuget.config. Add the 'nuget.config' to the solution directory created in step #2. Place the following text in the nuget.config file: <?xml version="1.0" encoding="utf-8"?> <configuration> <config> <add key="repositorypath" value="$\..\..\..\..\Packages" /> </config> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>
这个配置文件将允许您将所有包合并到一个地方,这样您就不会在文件系统中有相同包的20个不同副本。相对路径将根据您的解决方案目录体系结构而改变,但它应该指向所有解决方案的公共目录。
在执行步骤5后,需要重新启动visual studio。除非你这样做,否则Nuget不会发现这些变化。
最后,您可能必须使用“Nuget包管理器的解决方案”卸载,然后重新安装包。我不知道这是否是我运行的Powershell脚本的副作用,或者只是踢NuGet回到齿轮的方法。当我完成了所有这些步骤后,当我从TFVC签出项目时,我复杂的构建体系结构完美地运行了新的包。
如果所有这些都失败了(或者在此之前),您可能需要检查并查看NuGet是否是包源代码。我安装了VS2017,默认情况下它不在那里。我觉得有点奇怪。
工具- NuGet包管理器-包管理器设置 点击对话框左侧导航的“包源”。 使用加号(+)添加Nuget URL: https://api.nuget.org/v3/index.json
如果其他人在Visual Studio 2017中发现这个问题,请确保项目是通过.sln文件而不是文件夹打开的,因为Visual Studio如果按文件夹打开则不会拾取设置。如果您正在为git使用Visual Studio在线服务,则默认会发生这种情况。
Ivan Branets的解决方案基本上为我解决了这个问题,但更多的细节可以分享。
在我的情况下,我在VS 2015使用自动包恢复和TFS。这些都是默认的东西。
问题是,当另一个开发人员试图从TFS获得解决方案时,一些包没有完全恢复。(为什么,我还不太确定。)但是packages文件夹包含了一个用于引用和NuGet包的文件夹,但是它没有被展开(比如一个包含.dll的lib文件夹丢失了)。这一半,但不是很正确的概念阻止了包装的恢复。
您可以认出这一点,因为该引用将有一个黄色感叹号,表示未被解析。
因此,删除包中的文件夹的解决方案消除了包恢复阻塞问题。然后,您可以在顶部解决方案级别上单击右键,以获得恢复包的选项,现在它应该可以工作了。