我在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管理丢失的软件包没有帮助。