Nuget不更新项目引用

时间:2015-09-15 05:42:56

标签: nuget

我最近将所有Visual Studio 2013项目迁移到Visual Studio 2015,并遵循Nuget在此article中记录的步骤,以确保自动程序包还原仍然有效,简而言之

  • 我从源代码管理和磁盘
  • 中删除了Nuget.exe和Nuget.target文件
  • 我更新了所有项目文件并删除了与Nuget
  • 相关的部分

我在更新Nuget软件包时遇到问题,它没有更新项目引用以指向最新的dll版本。我可以看到安装了最新的软件包。此问题也与特定包无关。

还有其他人遇到过这样的问题吗?

7 个答案:

答案 0 :(得分:15)

NuGet包还原不会修改项目文件。它只是将NuGet包下载并解压缩到packages目录。

如果您正在尝试编辑packages.config文件,然后更新项目,则必须使用程序包管理器控制台并运行:

Update-Package -reinstall

将再次卸载并安装软件包并更新项目的参考资料。

答案 1 :(得分:4)

我们意识到我们的一些初级开发人员只在解决方案中为一个项目安装了所需的Nuget包,然后通过浏览到磁盘上dll的物理位置,为所有其他项目添加了对所需dll的引用。这显然导致了这个问题,因为解决方案中只有一个项目在其packages.config文件中包含Nuget包的条目,而解决方案中的其余项目则不包含。

当使用Update-Package命令更新所有包时,只有包含其package.config文件中的条目的ONE项目使用正确的项目引用进行更新。

即使这不是Nuget错误而且是由于缺乏经验而导致的问题,我在Nuget上记录issue,看看他们是否可以改进软件以防止出现这些类型的问题。

答案 2 :(得分:2)

所以我最近也有一个非常类似的问题,不幸的是卸载和重新安装都没有用。希望这可以帮助其他人,因为它非常令人沮丧。

步骤:

  1. 转到或启动快速启动功能。
  2. 类型包管理器
  3. 选择“工具 - > Nuget PackageManager->包管理器设置”
  4. 在弹出的选项窗口中。单击“清除所有Nuget Cache(s)”
  5. 右键单击解决方案并选择Restore Nuget Packages。
  6. 希望这有帮助。

答案 3 :(得分:1)

我遇到了Newtonsoft.Json的NuGet包的问题,​​如下所示:

enter image description here

我尝试了所有可能的解决方案,但下面提到的没有解决方案:

  • 清洁液
  • 重建解决方案
  • 清除NuGet包缓存

最后我意识到它与我的C#项目所针对的.NET Framework版本有关。似乎有一些不匹配。当我将项目的.NET Framework版本升级到最新版本时,Newtonsoft.Json包依赖项及其引用立即生效。

答案 4 :(得分:1)

我刚刚注意到的某件事,我不确定这是否对您或其他任何人有帮助,但这确实使我的大脑崩溃。问题是我正在安装使用Windows上的NuGet软件包资源管理器创建的软件包。

事实证明,我相信在更新NuGet软件包资源管理器后,它不再将我包含的DLL放到lib文件夹中。一旦我开始手动将lib文件夹添加回Package Explorer中的软件包,然后上传到NuGet并重新安装到使用的项目中,该引用将再次出现。

我不确定是什么原因导致了这种行为-可能是我自己的错,但我现在才真正弄清了这一点-因此不得不回头重新做一堆NuGet软件包。在过去的一个月里做了。哎呀。

希望这可以减轻某人的痛苦。

答案 5 :(得分:0)

以上都不对我有用。

起作用的是直接编辑项目文件并删除现有参考。当我重新加载项目时,该程序包随后以Nuget程序包的形式出现在引用中。

答案 6 :(得分:0)

我碰巧遇到了同样的问题。我尝试了所有可能的解决方案,但找到了解决方案-只需在文本编辑器中打开 .proj 文件,然后检查包 Version HintPath 参考标签中。有时存在不匹配的更正,Visual Studio会识别出来。希望每个人都可以节省很多时间。这是要参考的示例

<Reference Include="nunit.framework, Version=3.4.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb">
      <HintPath>..\packages\NUnit.3.4.1\lib\net45\nunit.framework.dll</HintPath>
</Reference>