什么时候生成MSIL?

时间:2011-09-06 18:48:12

标签: cil

假设我的解决方案中有一个C#Windows类库,我在VS2010 IDE中构建它。 我的bin目录中的输出是X.dll

1) X.dll在此阶段不包含MSIL,但是“压缩字节代码”。
   这是真的吗?

2)这个“压缩字节代码”以某种方式转换为MSIL    这是什么时候发生的?

3)当访问X.dll时,CLR的JIT编译器会将需要转换的MSIL部分转换为机器代码。
我对这最后一部分有好处吗?

有人可以帮我填补我理解的空白吗?

2 个答案:

答案 0 :(得分:2)

使用Visual Studio构建它后,

X.dll包含MSIL字节码。你可以用ildasm反汇编来证明这一点。

在程序集加载和代码的实际执行之间的某个时间,MSIL被转换为本机代码。我不熟悉这是做什么的,但我会怀疑装配负荷。

答案 1 :(得分:0)

为了建立Dark Falcon的响应,问题2,IL代码(非压缩字节代码)由JIT编译器逐个方法地在每次第一次调用时转换为本机代码。因此,对于2号的较短答案是“首次访问该方法时”。字段不受此限制,属性本身就是伪装方法。

关于第三个问题,不,IL在加载时不会被JITed。见上文。