WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

.Net中使用aliases让相同命名空间的dll引用共存

Posted on   WebEnh  阅读(474)  评论(0编辑  收藏  举报

有些不得已的时候,我们需要同时在代码中使用某个dll的不同版本。比如用低版本的dll中的方法导出数据,然后使用高版本的方法导入数据来实现数据的升级. 又或者需要同时使用第三方的dll不同版本。如何使它们并存于系统中是个难题。

如果同时存在于系统中,会出现ambiguous refrence(有歧义的引用)的编译错误。下文介绍如何使用aliases解决这个问题。

一, 构建两个不同版本的Project

首先构建2个不同的Project来模拟不同版本的dll引用, 这两个project中的命名空间和类名完全相同。

在MultipleVersionTest项目中同时引用这两个Project. 如下图:

blog1

HighVersion项目中的代码

复制代码
复制代码
public class NameProvider
{
       public static string GetName()
       {
           return "Name From high version";
       }
}
复制代码
复制代码

LowVersion项目中的代码

复制代码
复制代码
public class NameProvider
{
       public static string GetName()
       {
           return "Name From Low version";
       }
}
复制代码
复制代码

在MultipleVersionTest项目中,

复制代码
复制代码
class Program
{
       static void Main(string[] args)
       {
           System.Console.WriteLine(NameProvider.GetName());
           System.Console.ReadLine();
       }
}
复制代码
复制代码

从下图能看出来, 出现的编译错误。

blog2

二,使用aliases区分不同的dll

1. 在MultipleVersiontTest项目中,分别修改应用的Aliases, 从默认的global改成low和high

blog11

2. 使用extern alias,区分不同版本dll中的类

复制代码
复制代码
extern alias low;
extern alias high;

namespace MultipleVersionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine(low::NameFactory.NameProvider.GetName());
            System.Console.WriteLine(high::NameFactory.NameProvider.GetName());
            System.Console.ReadLine();
        }
    }
}
复制代码
复制代码

3. 编译成功,运行结果如下:

blog22

 
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多