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 包未恢复的主要内容,如果未能解决你的问题,请参考以下文章
CI CD TFS 2013 - TFS 服务器构建上的 Nuget 自动恢复