如何强制CLR运行验证?

时间:2016-03-17 13:12:18

标签: .net clr cil type-safety

下面的代码通过了CLR验证(您可以尝试将其与ilasm.exe组合在一起并运行生成的.exe而不会出现任何错误 - 我正在使用CLR v4.0.30319对其进行测试)。

但是,如果您对生成的PEverify.exe投放.exe,则会报告:

  

堆栈上的意外类型。

关于我传递给Exception方法的无效对象Console::WriteLine(string)

为什么CLR没有运行验证?而且,我们如何强制CLR运行它呢?

.assembly extern mscorlib
{
    .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
    .ver 4:0:0:0
}

.assembly TypeSafe
{
}

.class TypeSafe
{
    .method static void Start()
    {
        .entrypoint
        ldstr       "Exception instead of String"
        newobj      instance void [mscorlib]System.Exception::.ctor(string)
        call        void [mscorlib]System.Console::WriteLine(string)
        ldstr       "I'm ok"
        call        void [mscorlib]System.Console::WriteLine(string)        
        ret
    }
}

0 个答案:

没有答案