gpt4 book ai didi

c# - 如何为 mscorlib 创建外部别名

转载 作者:太空狗 更新时间:2023-10-29 18:31:36 33 4
gpt4 key购买 nike

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

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

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

  • 无法添加对“mscorlib”的引用。该组件已被构建系统自动引用。

因此,考虑到以上所有情况,问题是:如果我看不到甚至没有将其添加到项目的引用列表中,我如何才能为 mscorlib 指定一个外部别名?

最佳答案

答案与 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;

关于c# - 如何为 mscorlib 创建外部别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27589528/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com