我有一个特别困难的重构会话,涉及在Visual Studio 2012中有多个项目的C#解决方案。我需要将一堆代码提取到他们自己的程序集中,以便代码可以在多个项目中共享,所有这些都在同样的解决方但是,无论我尝试什么,我都会收到引用新共享项目的项目的警告“所有项目引用{共享项目名称}必须安装nuget包Microsoft.Bcl.Build”。
我已经完成了依赖项目和带有细齿梳的共享项目,详细验证了它们都使用相同的版本和完全相同的DLL用于Microsoft.Bcl版本1.0.1.19和Microsoft.Bcl.Async版本1.0.16包:
System.Threading.Tasks
Microsoft.Threading.Task
DLL路径全部已解析且相同。 XAP文件确实构建但我仍然得到警告告诉我,依赖项目中没有引用Microsoft.Bcl.Build,尽管我可以看到它是。
如果我尝试卸载然后使用NuGet为所涉及的每个项目重新安装这两个软件包,我会获得带有空路径的引用和所涉及的5个DLL引用的警告图标。由于某种原因,NuGet添加了引用但无法找到DLL。另外,如果我这样做,我发现自己经常遇到这样的问题:在尝试添加引用时,我会收到“无法添加引用”错误的项目。然后我关闭并重新打开解决方案,这导致“项目无法加载”错误。所以我必须手动编辑项目文件,删除错误的包导入语句,然后重新加载项目。
如何解决这个问题以及将来避免这种头痛的一般技术是什么?让NuGet管理丢失的软件包对al。
没有帮助答案 0 :(得分:16)
如果有其他人遇到这个问题并且@ Swell的解决方案让你去“wtf”:
我最近经历了一个较旧的MVC项目并更新了它(更新了razor,asp,http等nuget包)。该项目独立于自身,建造得很好,但是当我去发布它时失败了OP的错误。
事实证明这是因为我没有更新与之关联的*.Tests
项目(应该已经想到了,但不确定为什么测试 与项目密切相关)。所以,要解决:
你现在应该好,不应该咆哮你。希望能帮助他人。
答案 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中修复