引用子项目的所有项目必须安装NuGet包Microsoft.Bcl.Build(C#/ Windows Phone 7)?

时间:2013-05-25 11:29:50

标签: c# visual-studio nuget packages .net-assembly

我有一个特别困难的重构会话,涉及在Visual Studio 2012中有多个项目的C#解决方案。我需要将一堆代码提取到他们自己的程序集中,以便代码可以在多个项目中共享,所有这些都在同样的解决方但是,无论我尝试什么,我都会收到引用新共享项目的项目的警告“所有项目引用{共享项目名称}必须安装nuget包Microsoft.Bcl.Build”。

我已经完成了依赖项目和带有细齿梳的共享项目,详细验证了它们都使用相同的版本和完全相同的DLL用于Microsoft.Bcl版本1.0.1.19和Microsoft.Bcl.Async版本1.0.16包:

  • System.Runtime
  • System.Threading.Tasks

  • Microsoft.Threading.Task

  • Microsoft.Threading.Tasks.Extensions
  • Microsoft.Threading.Tasks.Extensions.Phone

DLL路径全部已解析且相同。 XAP文件确实构建但我仍然得到警告告诉我,依赖项目中没有引用Microsoft.Bcl.Build,尽管我可以看到它是。

如果我尝试卸载然后使用NuGet为所涉及的每个项目重新安装这两个软件包,我会获得带有空路径的引用和所涉及的5个DLL引用的警告图标。由于某种原因,NuGet添加了引用但无法找到DLL。另外,如果我这样做,我发现自己经常遇到这样的问题:在尝试添加引用时,我会收到“无法添加引用”错误的项目。然后我关闭并重新打开解决方案,这导致“项目无法加载”错误。所以我必须手动编辑项目文件,删除错误的包导入语句,然后重新加载项目。

如何解决这个问题以及将来避免这种头痛的一般技术是什么?让NuGet管理丢失的软件包对al。

没有帮助

2 个答案:

答案 0 :(得分:16)

如果有其他人遇到这个问题并且@ Swell的解决方案让你去“wtf”:

我最近经历了一个较旧的MVC项目并更新了它(更新了razor,asp,http等nuget包)。该项目独立于自身,建造得很好,但是当我去发布它时失败了OP的错误。

事实证明这是因为我没有更新与之关联的*.Tests项目(应该已经想到了,但不确定为什么测试 与项目密切相关)。所以,要解决:

  1. 右键点击解决方案并管理nuget包。
  2. 浏览Web项目中更新的所有软件包,并将它们应用到其他项目中(每个“更新”将显示一个包含适用项目的树,我很好,只需点击通过)。
  3. 重建。
  4. 你现在应该好,不应该咆哮你。希望能帮助他人。

答案 1 :(得分:6)

我刚刚遇到同样的问题,并在此处打开了一个错误:http://nuget.codeplex.com/workitem/3268

我所做的是以下内容,我在解决方案级别添加了Microsoft.Bcl.Build包

在我的开发环境中如果你没有加载软件包,只需右键单击解决方案并选择管理nuget软件包,你会看到一个带有恢复按钮的黄色条,只需单击它就可以了。

在编译项目之前的构建脚本中,我运行以下命令:

.\myproject\.nuget\NuGet.exe install .\myproject\.nuget\packages.config -OutputDirectory .\myproject\packages

这将恢复解决方案级别的包,你会没事的。

根据问题报告

,这应该在今年夏天结束时在版本2.7中修复