利用资源文件解决动态链接库地狱的…

因为使用了太多第三方类库导致dll文件成吨,管理上出现了很多麻烦。

参考资料:http://wenku.baidu.com/link?url=d6Xp7Q9f9daFoQyWzbv5DViOKCgMpYWKH0Mw_PRz6AuybKYLawh3dl6qW7Zi22Ax2LOpXnGJbnHBTU-FfHC8hw3BtvN1dM-3wL0WNf2-v9m

 

http://www.jb51.net/article/42144.htm

 

将动态链接库加入项目的Resources中。

在主函数所在的类的构造函数中进行如下处理:

static class Program
 {
  static Program()
  {

//加载动态链接库失败时触发该事件
   AppDomain . CurrentDomain . AssemblyResolve += CurrentDomain_AssemblyResolve;
  }

 

  static System . Reflection . Assembly CurrentDomain_AssemblyResolve(object sender , ResolveEventArgs args)
  {
   //获取加载失败的程序集的全名
   switch (args . Name)
   {
    case "Emgu.CV, Version=2.9.0.1922, Culture=neutral, PublicKeyToken=7281126722ab4438":
     {
      return Assembly . Load(Properties . Resources . Emgu_CV);//加载资源文件中的dll,代替加载失败的程序集
      //另一种读取资源的方法
      //using (var stream = Assembly . GetExecutingAssembly() . GetManifestResourceStream("Emgu_CV.dll"))
      //{
      // var bytes = new byte[stream . Length];
      // stream . Read(bytes , 0 , (int)stream . Length);
       
      //}
     }
    default:
     throw new DllNotFoundException(new AssemblyName(args . Name) . FullName);
    
  }
  ///
  /// 应用程序的主入口点。
  ///
  [STAThread]
  static void Main()
  {
   Application . EnableVisualStyles();
   Application . SetCompatibleTextRenderingDefault(false);
   Application . Run(new MainForm());
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值