-
-
[求助]有人用过Mono.Cecil 0.7及以上版本吗?
-
发表于: 2010-5-27 21:38 4323
-
在网上找了下,0.6版以后直接就是0.9了,没找到0.7/0.8版
0.6版(我是0.6.9.0)似乎有BUG
我用ModuleDefinition.Inject方法注入一个TypeDefinition(例如叫Class1),如果Class1的某个函数中调用了Class1的另一个函数,注入后就会出错:
class my
{
public static void M()
{
Console.WriteLine("a");
}
public static void hoho()
{
Console.WriteLine("b");
}
}
如果把my注入到别的程序集,没有任何问题,而且目标程序集不会依赖my原来所在的程序集
但是如果改成:
class your
{
public static void M()
{
hoho();//调用了your类的其它函数
}
public static void hoho()
{
Console.WriteLine("b");
}
}
注入就会失败,用Reflector查看注入后的程序集,就发现hoho函数正常,而浏览到M函数,会弹出一个对话框,让你浏览your原来所在的程序集,而且查看目标程序集也会发现,会依赖原程序集的,最郁闷的是,即使把原程序集放到同一目录,注入后的程序集运行后也崩溃(前提是要调用注入的类中的方法)
所以我想试试0.7及其以后的版本,结果只找到0.9(0.9.2.0),但是却发现类库变得面目全非了,其ModuleDefinition类已经不包含Inject函数了
想问一下,0.6.9.0这是个BUG吗?或者后续版本应该怎么用?
0.6版(我是0.6.9.0)似乎有BUG
我用ModuleDefinition.Inject方法注入一个TypeDefinition(例如叫Class1),如果Class1的某个函数中调用了Class1的另一个函数,注入后就会出错:
class my
{
public static void M()
{
Console.WriteLine("a");
}
public static void hoho()
{
Console.WriteLine("b");
}
}
如果把my注入到别的程序集,没有任何问题,而且目标程序集不会依赖my原来所在的程序集
但是如果改成:
class your
{
public static void M()
{
hoho();//调用了your类的其它函数
}
public static void hoho()
{
Console.WriteLine("b");
}
}
注入就会失败,用Reflector查看注入后的程序集,就发现hoho函数正常,而浏览到M函数,会弹出一个对话框,让你浏览your原来所在的程序集,而且查看目标程序集也会发现,会依赖原程序集的,最郁闷的是,即使把原程序集放到同一目录,注入后的程序集运行后也崩溃(前提是要调用注入的类中的方法)
所以我想试试0.7及其以后的版本,结果只找到0.9(0.9.2.0),但是却发现类库变得面目全非了,其ModuleDefinition类已经不包含Inject函数了
想问一下,0.6.9.0这是个BUG吗?或者后续版本应该怎么用?
赞赏
他的文章
看原图
赞赏
雪币:
留言: