.net加载启动目录以外的DLL的几种方法参考

 在.net运行过程中,通常会从启动目录加载assembly。但是如果我们碰到下面这种情况:

一个解决方案里有两个项目,A, B,
A项目是主程序,B项目是程序集。
A项目引用了B项目,编译生成后A.exe和 b.dll默认就同在Debug目录。
由于多个exe,多个dll,所以想把exe放到自己建的一个bin目录。dll都放到自己建的lib目录。并保证exe运行时能访问到lib目录中的dll 

这种情况我们该如何做呢?

 

方法 1: 在全局程序集缓存 (GAC) 中都安装该程序集
      这样dll就变成了全局的,所有exe都可以载入它。

 

方法 2: 使用 <codebase> 标记应用程序配置 (.config) 文件
<codebase> 标记指定公共语言运行库在哪里可以找到程序集。 公共语言运行库从.config 文件应用 <codebase> 标记的设置。 <codebase> 标记该设置确定版本和程序集的位置。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="MyAssembly2"  culture="neutral" publicKeyToken="307041694a995978"/>
            <codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

 

方法 3: 使用 AssemblyResolve 事件

 当net runtime加载引用的assembly失败时,会触发AssemblyResolve 事件,AssemblyResolve 事件处理程序必须返回可以一个的 [程序集] 对象,并将公共语言运行库必须绑定到此对象。 通常,您可以使用 Assembly.LoadFrom 方法加载该程序集,然后返回该对象。

 

原帖:http://www.itwis.com/html/net/kaifagongju/20090206/3291.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值