同时引用同一个组件的两个版本

  在我们开发项目时,引用组件一般都是使用Nuget获取最新稳定版本,不可能出现同一个组件,引用两个版本。但是有些小伙伴维护老系统时,发现有些组件是用以前的低版本,无法直接升级到最新稳定版本,升级了以后就会发现不兼容,高版本没有兼容低版本的,有些类、方法、属性不见了。不引入最新稳定版本,又无法在老项目中开发新的需求。因此,我们可以将两个版本都引入到项目中进行使用。旧版本我们不需要去动它,只需求把最新版本通过Nuget下载下来后,重名命组合名放到项目的固定目录下,再修改配置文件中组件的指定版本。看以下操作:

以iTextSharp为例。低版本是4.0.6.0,引入高版本5.5.13.2。

 

 

 1、通过Nuget下载,将单元测试项目(可以随便新建个项目或其它方式,目的是下载组件)下 packages\iTextSharp.5.5.13.2\lib\itextsharp.dll ,拷贝到正式项目固定目录下(一般l项目下lib目录是存放第三方组)重名命为itextsharp.v5.dll。项目引用这个组件。

2、项目配置文件app.config增加

<dependentAssembly>
<assemblyIdentity name="iTextSharp" publicKeyToken="8354ae6d2174ddca" culture="neutral" />
<codeBase version="0.0.0.0-4.0.6.0" href="iTextSharp.dll" ></codeBase>
<codeBase version="5.5.13.2" href="iTextSharp.v5.dll" ></codeBase>
</dependentAssembly>

 3、代码使用

extern alias iTextSharpV5;
using iTextSharp;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Nunit.Lizh.Test
{
    [TestClass]
    public class ITextSharpTest
    {

        [TestMethod]
        public void test()
        {
            // 4.0
            var v4= new iTextSharp.text.Document();
            // 5.0
            var v5= new iTextSharpV5.iTextSharp.text.Document();

        }

    }
}

注:使用iTextSharp5.5.13.2,还需引用BouncyCastle.Crypto1.8.6.0。

posted on 2022-12-05 17:56  走出高度  阅读(308)  评论(0编辑  收藏  举报