对NuGet包的引用错误地更改为本地项目引用

时间:2015-03-23 22:43:44

标签: .net visual-studio nuget nuget-package

由于x86应用无法看到x64(FWIW x86,我必须将解决方案的平台从QWinSta.exe更改为Any CPU,才发现这一点无法看到它)。切换后,一切都变得混乱,我的十几个实用程序库和基类项目找不到它们的引用。快速切换和重建使一切都恢复正常(但当然不能提供我需要的x64

到目前为止,为了安全起见,我一直在构建所有内容x86。所以......显然是时候付钱给吹笛人了。

发生的事情是,我在这些支持项目中的所有NuGet包引用都以某种方式被更改为现在指向项目的bin文件夹中的程序集位置,而不是它们最初开始的包文件夹。

例如,我有一个名为Extensions的项目,它提供了一系列随着时间的推移而构建的方便的扩展方法。我在几个不同的解决方案中使用此项目。以前的一个包引用:

<SolutionDir>\Packages\Quartz.2.3.1\lib\net40\Quartz.dll

现在是:

<CommonLibrariesDir>\Extensions\bin\x86\Debug\Quartz.dll

这就是为什么当我切换到x64时一切都崩溃了 - 引用的程序集根本就不存在。

我想更好地了解软件包管理器在这种情况下的内部工作方式,所以我可以修复它并更好地构建一些东西以避免将来发生,但我担心我不知道在哪里开始。我一直在浏览文档而不知道我在寻找什么。

有一点可能值得注意:通常当我创建一个新的解决方案/项目并添加/引用一个现有的项目,而该项目又包含NuGet包时,我会被提示“恢复丢失的包”,我继续这样做。这可能与它有关吗?

1 个答案:

答案 0 :(得分:0)

嗯,那很快。

我决定留下问题并在此处回答,以防其他人遇到同样的问题。

所需要的只是一个简单的命令:

Update-Package -Reinstall

我所有的支持项目参考都设置正确,我可以毫无困难地切换到x64。真是个惊喜!

我在这里找到了它:

http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html

  

重新安装当前解决方案的所有项目中的所有包:

Update-Package -Reinstall