如MSDN文章中所述
CA2140: Transparent code must not reference security critical items
:
如何修复违规
若要修复违反此规则的行为,请执行以下操作之一:
-
将使用安全关键代码的代码元素标记为
SecurityCriticalAttribute
属性
-或-
-
移除
安全关键属性
标记为安全关键的代码元素的属性,而不是
标记它们
与
SecuritySafeCriticalAttribute
或
SecurityTransparentAttribute
属性
你必须用
[SecuritySafeCriticalAttribute]
。在这里它正在发挥作用:
using System;
using System.Runtime.CompilerServices;
using System.Reflection;
using System.Security;
[assembly: AllowPartiallyTrustedCallers]
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
PreJIT();
}
[SecuritySafeCritical]
static void PreJIT()
{
RuntimeHelpers.PrepareMethod(
System.Reflection.Emit.DynamicMethod.GetCurrentMethod()
.MethodHandle);
}
}
}