关于错误“未能加载文件或程序集”的错误的若干处理办法——对GAC的简单应用

本文探讨了在应用程序中引用DLL时常见的“无法找到指定程序集”错误的原因及解决方案,包括将DLL与EXE置于同一目录、使用GAC(全局程序集缓存)等方法,旨在提供更优雅的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原因

通常来说,类库作为应用程序的一部分,在程序运行之前就应该被引用到应用程序之中,并且其dll文件也应该与应用程序的.exe文件位于同一目录之下。当dll与.exe不在同一目录下时,就会引发“无法找到指定程序集”的错误。类库不像即插即用的插件,它是应用程序不可拆卸的一部分。

二、一般解决方案

在说完原因之后,其实解决方案也就已经出来了——将dll于.exe置于同一目录下即可。

当然,这只是最为简单的一种解决方法,而它所留下的后遗症也是显而易见的:如果你有多个不同的应用程序引用了同一个类库时,就将不得不在每一个应用复制一个dll,这实在是有些麻烦且不够优雅。这种方案又可以有几种实现方法。

方法1:在指定引用的属性中选择“复制到本地”一栏,并将其设置为true

方法2:在.exe目录下新建一个文件夹,并使其名称与类库名称一致,然后将类库置于此文件夹下

方法3:打开app.config文件,并添加以下代码:

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="文件名"></probing>
      </assemblyBinding>
    </runtime>

只要将“文件名”替换为dll的目录即可,但需要注意的是,存储dll的文件必须置于与.exe同一目录下,否则这个方法无效

一般解决方案虽然解决了问题,但仍不够优美,下面我将介绍另一种方法。

三、对GAC的简单应用

GAC全称是Global Assembly Cache,作用是可以存放一些公共Assembly,也就是我们常说的公共类库。这样,很多程序就可以从GAC里面取得,而不需要再把所有要用到的dll都拷贝到应用程序的执行目录下面。

使用步骤:

(1)打开“开发人员命令提示符”

(2)创建密钥:

(3)使用密钥:

(4)重新编译后将程序集添加到缓存(这一步骤需要以管理员权限打开开发人员命令提示符):

(5)将目标添加目标引用并将“复制到本地”设置为false

以上就是解决方法

然后是将程序集移出缓存的方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值