由于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包时,我会被提示“恢复丢失的包”,我继续这样做。这可能与它有关吗?
答案 0 :(得分:0)
嗯,那很快。
我决定留下问题并在此处回答,以防其他人遇到同样的问题。
所需要的只是一个简单的命令:
Update-Package -Reinstall
我所有的支持项目参考都设置正确,我可以毫无困难地切换到x64
。真是个惊喜!
我在这里找到了它:
http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
重新安装当前解决方案的所有项目中的所有包:
Update-Package -Reinstall