关于 NuGet 包引用,类型 'XXX' 存在于 'aaa.dll' 和 'bbb.dll' 中

The type 'XXX' exists in both 'aaa.dll' and 'bbb.dll' concerning NuGet package references

我在 VS 2015 解决方案中有一个相当大的项目(是的,只有一个项目),它使用内部 NuGet 包(以及该包中的许多命名空间。)

我有另一个(较新的)NuGet 包,我只需要从中使用一个 class,但是 class 与一个(实际上更多)现有的 NuGet 包。

为了让事情变得更有趣,同一个新包引入了许多其他命名空间,用于多个其他 NuGet 包。

已阅读关于 extern alias 主题的 SO/blog 个帖子:

What use is the Aliases property of assembly references in Visual Studio 8https://blogs.msdn.microsoft.com/ansonh/2006/09/27/extern-alias-walkthrough/ http://geekswithblogs.net/bconlon/archive/2014/12/18/ambiguous-classes-in-c.aspx

我想我可以简单地添加所需的 NuGet 包,将它的别名从 global 更改为 except(它涉及异常日志记录),现在一切都应该像以前一样编译。我之所以这样想,是因为我相信在我没有明确表示要使用该包引入的新 DLL 中的命名空间的任何地方,都会继续使用现有的 DLL 命名空间。

这个假设(无论如何学习)似乎是错误的,因为我添加了 NuGet 包,更改了它的 DLL 别名并且重建没有成功。报告了大量 exists in both 构建错误。

唉。原来(遗留)解决方案依赖项是本地引用的 DLL,而不是 NuGet 包。

这里的教训:检查你的参考资料。