首页
社区
课程
招聘
[求助].net程序的loader怎么写?
发表于: 2008-9-9 17:10 8216

[求助].net程序的loader怎么写?

2008-9-9 17:10
8216
用vc写的程序可以写个loader来运行。可是.net的loader怎么写呢?

仅仅反射出main来,然后在loader里面调用main方法,程序运行起来会报找不到.dll程序集的错。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 5275
活跃值: (451)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
2
报错貌似是因为没有加载.net环境
写个纯托管或混合编译的loader应该就可以,这样loader本身运行时就已经加载.net环境了。
2008-9-9 18:48
0
雪    币: 215
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
loader使用C#写的啊。怎么加在.net环境呢?
2008-9-9 20:02
0
雪    币: 5275
活跃值: (451)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
4
C#的程序运行后就自动加载了。
那说明不是这个问题,可能是被load的程序本身有一些dll没有定位到
2008-9-9 20:30
0
雪    币: 215
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
对啊。程序单独运行的时候它可以找到相应目录下的dll程序集,但是当用loader调用时,却只能找到程序根目录下的程序集。不知道这个是为什么。
2008-9-9 20:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
把loader和原程序集放在一个目录下试试哈
2008-9-10 15:06
0
雪    币: 93
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
可以注册一个AppDomain.CurrentDomain.AssemblyResolve事件,当目标程序集找不到引用的DLL时会触发该事件,然后你帮助程序找到该dll即可。

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
      return Assembly.LoadFile("xxxx.dll");
}

不过搂主理解的loader好像和我理解的loader有区别,搂主的意思就是通过反射来调用一个程序集,而我理解loader为:可以获得被调用程序运行过程中的内部信息,就像Tracker工具一样,可以监控事件之类的。
2008-9-10 15:31
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
8
楼上是写壳的
2008-9-10 15:41
0
雪    币: 5275
活跃值: (451)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
9
看来.net下的loader含义又有扩展了:传统层次的和.net层次的。不过还是有机的统一。
2008-9-10 19:41
0
雪    币: 93
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
我也不知道具体定义是什么,只是个人感觉loader的翻译为“加载”,比“调用”要准确些。心血来潮,随便胡扯的,还望大侠批评!
2008-9-10 23:11
0
雪    币: 215
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
多谢楼上指点。我再研究研究
2008-9-11 09:17
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
12
仅仅反射出main函数,就能运行程序?不行吧
2008-9-12 08:57
0
雪    币: 149
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习,还真不知道loader是干什么的
2008-9-12 16:18
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
啊?这么理解?我原来的理解就是Fetion用的那个loader,用来脱离clr的东西
2009-1-20 02:57
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我的感觉也是这样,那有没有一种类似飞信这样的loader,可以自己指定想用环境的路径,而不是像现在这样只能用dotnetVM里面的.就是飞信的loader的源码思想是怎么样的?可不可能有人指点一二.在调用rsdeploy.dll下自己指定所用环境的路径.
2009-2-5 15:46
0
游客
登录 | 注册 方可回帖
返回
//