CSharp - C# SecurityException: ECall方法必须打包到系统模块中

我有一个类似于下面的(C#)函数。


private static bool SpecialCase = false;



public void Foo()


{


 if (SpecialCase)


 {


 InternalMethod();


 return;


 }



 Console.WriteLine();


}



[MethodImpl(MethodImplOptions.InternalCall)]


private static extern void InternalMethod();



当我在调试器中使用NET Framework 4执行这个操作时,该方法成功将空白行打印到控制台并返回,在调试器外部执行它时,它会引发一个异常,其中包含以下消息:


System.Security.SecurityException: ECall methods must be packaged into a system module.



当JIT编译器编译方法而不是调用InternalMethod时,引发了异常,

时间:

你可能需要检查编译器指令 ,

您似乎是一个测试/验证方案,这意味着您不需要将其编译到代码中,除非真正进行内部调用。

...