none
求教一个反射加载dll的问题 RRS feed

答案

  • 主程序通过接口反射加载dll中的对象。

    但是有个问题,比如加载dll A,而A依赖dll B,

    B必须在主程序根目录才能加载成功,这很不方便。

     

    有没有办法,A、B在同一目录,非主程序根目录,也能加载成功呢?


    My Program Tech Blog
    My Professional Tech Blog


    dear

    这需要设定应用程式组态

    请参考
    http://www.dotblogs.com.tw/yc421206/archive/2009/04/16/8030.aspx

    内容有点长,但演练一次你就懂了


    秘訣無它,唯勤而已
    2010年10月22日 8:33
  • 在反射命名空间 (System.Reflection) 中,有一 Assembly 类型,它提供几个公共静态方法,可以根据不同情况加载程序集。

    - Load
    - LoadFrom
    - LoadFile

    其中的 LoadFrom 可以指定文件路径。

    虽然 LoadFrom/LoadFile 可以从指定地方加载程序集,但在有可能的情况下还是考虑 Assembly.Load。因为 LoadFrom 不检查 UAC 部署,也不加载依赖程序集;LoadFile 更不会检查强签名和应用版本策略。


    Mark Zhou
    2010年10月22日 9:11

全部回复

  • 主程序通过接口反射加载dll中的对象。

    但是有个问题,比如加载dll A,而A依赖dll B,

    B必须在主程序根目录才能加载成功,这很不方便。

     

    有没有办法,A、B在同一目录,非主程序根目录,也能加载成功呢?


    My Program Tech Blog
    My Professional Tech Blog


    dear

    这需要设定应用程式组态

    请参考
    http://www.dotblogs.com.tw/yc421206/archive/2009/04/16/8030.aspx

    内容有点长,但演练一次你就懂了


    秘訣無它,唯勤而已
    2010年10月22日 8:33
  • 主程序通过接口反射加载dll中的对象。

    但是有个问题,比如加载dll A,而A依赖dll B,

    B必须在主程序根目录才能加载成功,这很不方便。

     

    有没有办法,A、B在同一目录,非主程序根目录,也能加载成功呢?


    My Program Tech Blog
    My Professional Tech Blog
    原来我也想过这个问题呀,可是没有实现呀,一般软件都会在根目录下有的,
    2010年10月22日 9:09
  • 在反射命名空间 (System.Reflection) 中,有一 Assembly 类型,它提供几个公共静态方法,可以根据不同情况加载程序集。

    - Load
    - LoadFrom
    - LoadFile

    其中的 LoadFrom 可以指定文件路径。

    虽然 LoadFrom/LoadFile 可以从指定地方加载程序集,但在有可能的情况下还是考虑 Assembly.Load。因为 LoadFrom 不检查 UAC 部署,也不加载依赖程序集;LoadFile 更不会检查强签名和应用版本策略。


    Mark Zhou
    2010年10月22日 9:11