首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建mscorlib的extern别名

如何创建mscorlib的extern别名
EN

Stack Overflow用户
提问于 2014-12-21 12:53:22
回答 1查看 1.8K关注 0票数 8

我有一个第三方库,它提供了一个System.Collections.Generic.IReadOnlyCollection类型,以便与.NET 4.0应用程序兼容。但是,如果将此库链接到.NET 4.5应用程序中,则会得到错误

  • 'System.Collections.Generic.IReadOnlyCollection‘类型同时存在于'd:\3rdParty\net40\3rdPartyLib.dll’和'c:\Program (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll‘中。

解决这些冲突的一种方法是为您想要使用的库指定一个外挂别名,并使用这个别名来消除我们所引用的程序集的歧义。指定外挂别名需要单击项目的References文件夹中的库引用,按F4以显示属性网格,然后在“别名”字段中指定另一个名称。但是,问题是,Visual中的引用列表中没有出现mscorlib。试图手动添加它会导致错误。

  • 无法添加对“mscorlib”的引用。此组件已由生成系统自动引用。

因此,考虑到以上所述,问题是:既然我看不到,甚至不能将它添加到项目的引用列表中,那么我如何才能为mscorlib指定外部别名?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-21 12:53:22

答案与How to create an extern alias for System.Core?的行文相同

我们必须手动编辑项目的.csproj文件,然后查找列出项目所有引用的ItemGroup部分。在本节中,我们必须手动添加对mscorlib的引用,并指定我们想要使用的别名,如

代码语言:javascript
复制
<ItemGroup>
    <Reference Include="mscorlib">
      <Aliases>global, mscorlib</Aliases>
    </Reference>

     ... other references

</ItemGroup>

之后,我们可以转到发生错误的源文件,然后添加

代码语言:javascript
复制
extern alias mscorlib;

文件的顶部。最后,无论何时出现错误“. 'System.Collections.Generic.IReadOnlyCollection‘类型都存在于.”我们只需指定mscorlib引用的完整命名空间,如

代码语言:javascript
复制
mscorlib::System.Collections.Generic.IReadOnlyCollection<double> bla;

当然,这样长的行也可以通过在文件顶部指定一个使用指令来缩短,如

代码语言:javascript
复制
using ms = System.Collections.Generic;

然后用它作为

代码语言:javascript
复制
ms.IReadOnlyCollection<double> bla;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27589528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档