我有第三方lib,它提供 System.Collections.Generic.IReadOnlyCollection 类型,以便与.NET 4.0应用程序兼容。但是,如果在.NET 4.5应用程序中链接此库,则会出现错误
解决这类冲突的一种方法是为要使用的库指定extern别名,并使用此别名消除我们引用的程序集的歧义。指定extern别名包括单击项目的References文件夹中的库引用,按F4显示属性网格,然后在“Aliases”字段中指定另一个名称。但是,问题是 mscorlib 不会出现在Visual Studio的参考列表中。尝试手动添加它会导致错误
因此,考虑到以上所有问题,问题是:如何为mscorlib指定外部别名,因为我无法看到甚至不将它添加到项目的引用列表中?
答案 0 :(得分:7)
答案与How to create an extern alias for System.Core?
中的答案相同我们必须手动编辑项目的.csproj文件,然后查找列出项目所有引用的ItemGroup部分。在本节中,我们必须手动添加对mscorlib的引用并指定我们想要使用的别名,如
<ItemGroup>
<Reference Include="mscorlib">
<Aliases>global, mscorlib</Aliases>
</Reference>
... other references
</ItemGroup>
之后,我们可以转到发生错误的源文件,然后添加
extern alias mscorlib;
到文件的顶部。最后,每当我们遇到错误“...类型'System.Collections.Generic.IReadOnlyCollection'都存在于......”我们可以指定mscorlib引用的完整命名空间,如
mscorlib::System.Collections.Generic.IReadOnlyCollection<double> bla;
当然,通过在文件顶部指定using指令,也可以缩短这种长度的行,如
using ms = System.Collections.Generic;
然后将其用作
ms.IReadOnlyCollection<double> bla;