未能加载文件或程序集或它的某一个依赖项,系统找不到指定的文件

解決不同版本依赖问题

1. 问题描述

一个项目引用不同版本的同一DLL,会引发以下报错:

未能加载文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一个依赖项。系统找不到指定的文件

这里来解决项目中同一DLL的多版本问题。

2. 解决方式

通过配置配置文件(app.config[控制台或窗体应用等]或web.config[Web项目])增加配置节点dependentAssembly

不同场景有不同的解决方式,下面说明

场景一、以高版本兼容

例如:新旧项目都引用Newtonsoft.Json,但是不同版本。需要以最高版本兼容时:



  
  
  
  
  
  
  
    
      
        
        
      
      
        
        
      
    
  

场景二、同一DLL两种版本共存

例如:项目自己引用log4net.dll 版本1.2.13.0 。添加第三方某个dll,第三方依赖log4net.dll版本1.2.9.0,项目中需要两种版本共存。
这里还分两种情况,DLL的publicKeyToken相同还是不同 (publicKeyToken查询见说明)

  • publicKeyToken相同,配置方法:

  
    
      
      
      
    
  
  • publicKeyToken不同,配置方法:

  
    
      
      
    
    
      
      
    
  

说明

  • publicKeyToken获取方式

使用Visual Studio的Tools Command Prompt命令行工具,输入:SN -T "path",例如:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC>SN -T D:\Newtonsoft.Json.dll

Microsoft(R) .NET Framework 强名称实用工具 版本 4.0.30319.33440
版权所有(C) Microsoft Corporation。保留所有权利。

公钥标记为 30ad4fe6b2a6aeed

转载于:https://www.cnblogs.com/liushen/p/Different_Dlls_In_The_Projects.html

你可能感兴趣的:(未能加载文件或程序集或它的某一个依赖项,系统找不到指定的文件)