2015-05-07 28 views
2

我的代码正在接收通过WCF服务构建程序集的字节数组。如何查看程序集的动态加载代码?

最后我创造我与装配对象:

Byte[] bytesFromWCF = ... // here I receive the bytes via WCF. 
Assembly myAsm = Assembly.Load(bytesFromWCF); 

字节这个数组来源于其在web服务器托管的MSIL文件。我没有直接访问该文件。 这个MSIL文件的方法用属性DebuggerHidden()装饰。

我的问题是如果有一种方法可以在运行时查看myAsm中动态加载的代码吗?

我的意思是方法的代码。通过反射我可以访问类型,创建实例,调用方法等,但我有兴趣分析源代码。

+1

你为什么不下载该文件,并在.NET反编译器打开它?例如dotPeek。在那里你可以分析程序集的源代码。 – cansik

+0

我无法直接访问该文件。在批准授权过程之后接收字节数组,为了清楚起见,我在代码中省略了这些授权过程。 – cls71

+1

@ cls71:您可以使用curl,wget,...简单地模拟身份验证过程,或者只是将字节数组存储在文件中... –

回答

2

分析程序集源代码的简单方法是将字节数组保存到文件中,并将下载的文件加载到.NET反编译器(dotPeek,.NET Reflector等)中。

保存字节数组到一个文件可以通过IO命名空间来实现:

byte[] bytesFromWCF = ... // here I receive the bytes via WCF. 
System.IO.File.WriteAllBytes("mylib.dll", bytesFromWCF); 
var myAsm = Assembly.Load(bytesFromWCF); 
...