1. 程式人生 > 其它 >同時引用同一個元件的兩個版本

同時引用同一個元件的兩個版本

  在我們開發專案時,引用元件一般都是使用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。