我在 Visual Studio 2012 中有一个涉及多个项目的 C# 解决方案的特别困难的重构会话。我需要将一堆代码提取到他们自己的程序集中,以便可以在多个项目之间共享代码,所有这些都在同一个解决方案中。但是,无论我尝试什么,我都会收到引用新共享项目的项目的警告,即“所有引用 {shared project name} 的项目都必须安装 nuget 包 Microsoft.Bcl.Build”。
我仔细检查了依赖项目和共享项目,详细验证它们都使用相同的版本和完全相同的 DLL 用于 Microsoft.Bcl 版本 1.0.1.19 和 Microsoft.Bcl.Async 版本 1.0。 16包:
- 系统运行时
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 管理丢失的包根本没有帮助。