0

我刚刚升级到 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>

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

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

4

1 回答 1

0

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

Update-Package -Reinstall <package-name>

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

于 2013-09-13T08:00:06.390 回答