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

References to NuGet packages incorrectly changed to local project references

由于 x86 应用程序无法看到 QWinSta.exe(FWIW Any CPU 也看不到)。切换后,一切都变得一团糟,我的十几个实用程序库和基础 class 项目找不到它们的引用。快速切换回来并重新构建一切正常(但当然不会给我我需要的 x64)。

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

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

例如,我有一个名为 Extensions 的项目,它提供了我在一段时间内建立起来的一系列方便的扩展方法。我在几个不同的解决方案中使用这个项目。它的包参考之一曾经是:

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

现在是:

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

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

我想更好地了解包管理器在这种情况下的内部工作原理,以便我可以修复它并更好地构建东西以避免将来出现这种情况,但恐怕我不知道从哪儿开始。我一直在翻阅文档,却不知道自己在寻找什么。

可能值得注意的一件事:通常当我创建一个新的 solution/project 和 add/reference 一个包含 NuGet 包的现有项目时,系统会提示我 'Restore missing packages,'我继续做。这可能与它有关吗?

嗯,很快。

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

只需要一个简单的命令:

Update-Package -Reinstall

我所有的支持项目引用都设置正确,我可以毫不费力地切换到 x64。真是惊喜!

我在这里找到的:

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

Reinstall all packages in all projects of the current solution:

Update-Package -Reinstall