在.net中加载dll的一种错误问题原因及处理

问题

在一个组件架构的应用程序中,程序启动时出现了一个错误。错误提示如下:

// List 1

=== 预绑定状态信息 ===
日志: DisplayName = SimpleComponent, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
日志: Appbase = file:///D:/thirdparty/ThirdPartyApp/ThirdPartyApp/bin/Debug/
日志: 初始 PrivatePath = NULL
调用程序集: (Unknown)。
===
日志: 此绑定从 default 加载上下文开始。
日志: 正在使用应用程序配置文件: D:\thirdparty\ThirdPartyApp\ThirdPartyApp\bin\Debug\ThirdPartyServicePlatformApp.exe.Config
日志: 使用主机配置文件: 
日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。
日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。
日志: 相同的绑定已出现过,因 hr = 0x80070002 而失败。

问题根源

这个应用是组件架构的应用,需要将开发的组件放到应用下的相应的Components目录;而且在框架代码中,在引用设置中,添加了SimpleComponent库的引用,
而且使用了类型硬编码创建对象。

// List 2
// ... ...
SimpleComponent component = new SimpleComponent();

// ... ...

这里2个问题:
1. 执行文件的当前目录下,并没有SimpleComponent库文件,所以找不到该文件。执行时会出错,如上面的异常情况。
2. 作为组件类框架,不能硬依赖,不需要再引用中添加该库。
3. 硬编码产生了硬依赖。不应该硬编码来创建对象。如List 2中的代码,硬编码导致硬依赖了。

解决

去除硬依赖,已经硬编码。如DP中的要求,针对接口编程, 而不是针对实现编程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值