【问题标题】:References to NuGet packages incorrectly changed to local project references对 NuGet 包的引用错误地更改为本地项目引用
【发布时间】:2015-03-23 22:43:44
【问题描述】:

由于x86 应用程序无法看到QWinSta.exe(FWIW Any CPU 也看不到它),我不得不将解决方案的平台从x86 更改为x64 时才发现这一点。切换后,一切都变得混乱,我的十几个实用程序库和基类项目找不到它们的引用。快速切换回来并重建一切都会再次正确(但当然不会给我我需要的x64)。

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

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

例如,我有一个名为 Extensions 的项目,它提供了一组方便的扩展方法,这些方法是我长期积累起来的。我在几个不同的解决方案中使用这个项目。它的包引用之一曾经是:

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

现在:

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

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

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

有一点可能值得注意:通常当我创建一个新的解决方案/项目并添加/引用一个包含 NuGet 包的现有项目时,系统会提示我“恢复丢失的包”,我会继续执行此操作.这可能与它有关吗?

【问题讨论】:

  • 嗨 Jeff,来自 ClickOnceMore 的 Greg。为这种非正统的方式联系杰夫向大家道歉,我选择了我能找到的最安静的问题。 Jeff 我已经回复了您所有的电子邮件,但回复都以“TLS 协商失败”的形式返回。你有其他电子邮件我可以联系你吗?谢谢,格雷格
  • @GregJackman - 现在那是客户服务!当然很高兴我选择了 ClickOnceMore :-)

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


【解决方案1】:

嗯,很快。

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

只需要一个简单的命令:

Update-Package -Reinstall

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

我在这里找到的:

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

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

Update-Package -Reinstall

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2016-10-15
    相关资源
    最近更新 更多