升级到NuGet 2.7后,Nuget无法识别已安装的软件包

时间:2013-09-13 08:00:06

标签: visual-studio-2012 nuget nuget-package-restore

我刚刚升级到NuGet 2.7并跟随Migrate to automatic package restore walkthrough。之后,我注意到NuGet没有正确识别已安装的软件包:

  • 构建版没有下载软件包,因此构建失败。

  • 在项目中选择“管理NuGet包”时,包未列在“已安装”下。

  • 在浏览在线软件包时,安装的软件包上有一个绿色勾号,因此我无法安装它们,即使“已安装”选项卡未列出它们。

我得出结论,NuGet 2.7只安装了一半的软件包,所以我手动从packages.config中删除了一行,然后重新安装了该软件包。这显示了csproj文件(差异视图)中的一个有趣变化:

  -  <Reference Include="xunit, Version=1.9.2.1705, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
  -    <SpecificVersion>False</SpecificVersion>
  +  <Reference Include="xunit">
       <HintPath>..\packages\xunit.1.9.2\lib\net20\xunit.dll</HintPath>
     </Reference>

前两行被第三行取代。之后,包再次正确安装。

那么如何在不对每个项目的每个包执行上述过程的情况下再次正确安装我的包呢?

1 个答案:

答案 0 :(得分:0)

我没有找到一个解决方案来立即恢复所有包的正确行为。但是,可以使用命令行为所有项目重新安装单个程序包:

Update-Package -Reinstall <package-name>

之后,程序包被正确识别为已安装并将正确恢复。然而,这种方法仍然很麻烦,所以如果有人有更好的方法,那就太好了!