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

news/2024/7/2 15:27:37

 在.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


http://www.niftyadmin.cn/n/4714822.html

相关文章

更改Anaconda notebook默认目录

不知为什么本人win10 64位电脑使用网上更改配置文件的方法改不成功&#xff0c;所以只好采用更改快捷方式属性的方法了orz 创建 jupyter notebook 新的路径&#xff0c;例如&#xff1a;创建新的文件夹 F:\code\Jupyter&#xff1b;右键桌面快捷方式&#xff0c;选择属性&…

Numpy矩阵基础

与操作 vectornumpy.array([5,10,15,20]) equal_to_ten_and_five(vector10)&(vector5) print(equal_to_ten_and_five)运行结果&#xff1a; 或操作 equal_to_ten_or_five(vector10)|(vector5) print(equal_to_ten_or_five)运行结果&#xff1a; 类型转换 vectornumpy.a…

编译和测试环境——VMware:简介和教程

因为开发过程是非常依赖开发环境的&#xff0c;比如我们使用的是Windows&#xff0c;如果要开发Unix的软件&#xff0c;往往要到Unix环境才行。至少要在该环境下测试一下&#xff0c;看看有没有问题。但是&#xff0c;通常我们只有一台或几台电脑&#xff0c;不可能每个环境都有…

Visual Studio 2010并行编程及调试诊断功能

Visual Studio2010 Beta 1发布后&#xff0c;开发人员从其新特性&#xff0c;新功能中得到了不少的帮助。这里将介绍Visual Studio 2010并行编程方面的改进&#xff0c;较Visual Studio 2008有了极大的提高。 每当出现新的编程模型时&#xff0c;开发人员便需要一个用来学习、…

微软Windows操作系统发展史

Windows发展史古人云&#xff1a;名满天下&#xff0c;谤亦随之。微软Windows操作系统获得巨大成功的同时&#xff0c;批判声总不绝于耳。下面&#xff0c;笔者将和大家一道回顾Windows的发展历程。MS-DOS 1.01981年8月&#xff0c;IBM公司推出了运行微软16位操作系统MS-DOS 1.…

Numpy矩阵的常用操作

开方 import numpy as np Bnp.arange(3) print(B) print(np.exp(B)) print(np.sqrt(B))运行结果&#xff1a; floor向下取整 anp.floor(10*np.random.random((3,4))) print(a) print(----) # 把矩阵变成向量 print(a.ravel()) print(----) a.shape(6,2) print(a) print(----)…

不同复制操作对比

复制 anp.arange(12) ba print(b is a) b.shape3,4 print(a.shape) print(id(a)) print(id(b))运行结果&#xff1a; 浅复制 ca.view() print(c is a) c.shape2,6 print(a.shape) c[0,4]1234 print(a) print(id(a)) print(id(c))运行结果&#xff1a; 深复制 da.copy() pri…

Pandas数据读取+索引计算

读csv文件 import pandas food_infopandas.read_csv(food_info.csv) print(type(food_info)) print(food_info.dtypes) print(help(pandas.read_csv))运行结果&#xff1a; 显示前5行 food_info.head()运行结果&#xff1a; food_info.head(3)运行结果&#xff1a; 显示后…