Nuget 包未恢复

Posted

技术标签:

【中文标题】Nuget 包未恢复【英文标题】:Nuget packages are not restored 【发布时间】:2017-06-17 17:40:06 【问题描述】:

我从 Gitub 克隆了项目。我的解决方案有 6 个项目,每个项目都有 packages.config 文件(其中列出了包及其版本),但这些包没有恢复。

我已经尝试恢复 nuget 包的方法:

    在 Visual Studio 中:Tools -> Options -> Nuget Package Manger -> General 并选中这两个选项。 在web.config 文件中写入以下代码:

<packageRestore> <!-- The 'enabled' key is True when the "Allow NuGet to download missing packages" checkbox is set. Clearing the box sets this to False, disabling command-line, automatic, and MSBuild-Integrated restore. --> <add key="enabled" value="True" /> </packageRestore>

这为该项目恢复了包,但其他项目没有 web.config 文件。

    %AppData%\NuGet\NuGet.Config中添加了以下代码:

<configuration> <packageRestore> <!-- The 'automatic' key is set to True when the "Automatically check for missing packages during build in Visual Studio" checkbox is set. Clearing the box sets this to False and disables automatic restore. --> <add key="automatic" value="True" /> </packageRestore> </configuration> (source)

    在包管理器控制台中运行此命令:Update-Package –reinstall 它对所有包裹都这么说:

Package 'Abp.2.1.2' already exists in project 'TempABP5.Migrator' Successfully installed 'Abp 2.1.2' to TempABP5.Migrator

    在您的.sln 文件旁边创建了一个NuGet.Config 文件,其中包含:

    <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" /> </packageSources> </configuration>

(source)

    通过从.csproj 文件中删除以下代码进行测试:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>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.</ErrorText> </PropertyGroup> <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> </Target>(source)

但我仍然无法恢复包并且项目无法构建。如何恢复丢失的包?

更新:

下图包含项目截图和错误:

我删除了 bin/obj 文件夹中的所有数据,然后清理解决方案,然后构建但同样的错误..

然后我再次运行命令Update-Package –reinstall 以确保包已经存在,结果是:

【问题讨论】:

如果没有恢复失败和构建失败的日志或截图,我们很难找到解决方案。那么您介意与我们分享一些失败结果的日志吗?另外,根据方法4的结果,项目中已经存在包,你判断包还原失败的依据是什么? @Leo-MSFT 我更新了问题,请看一下。 您是否尝试过清理解决方案,删除所有 obj/bin 文件夹? Intellisense 有时会根据某些缓存显示错误信息。 @Irfan Yusanif,感谢您的更新。这是 git 版本控制下的“包”吗?如果是,请尝试使用 .gitignore 文件让 Git 忽略包文件夹的内容。 docs.microsoft.com/en-us/nuget/consume-packages/… 下载项目后(恢复前)Package文件夹是否存在?如果是,请删除包文件夹,然后恢复包。 【参考方案1】:

安装失败。正在回滚...包“A”不存在于 项目。文件夹中已存在包“A”。

那是因为 git 版本控制下的“Packages”文件夹。您应该使用 .gitignore 文件让 Git 忽略包文件夹的内容。

详细信息可以参考Omitting NuGet packages in source control systems。

希望对你有帮助。

【讨论】:

以上是关于Nuget 包未恢复的主要内容,如果未能解决你的问题,请参考以下文章

新手:如何恢复nuget包?

恢复 Nuget 引用?

CI CD TFS 2013 - TFS 服务器构建上的 Nuget 自动恢复

TeamCity Build Server无法恢复nuget包

NuGet 有丢失包的问题,​​如何恢复?

Nuget 无法恢复 Microsoft.Net.Compilers.1.0.0