MSDN の記事CA2140: Transparent code must not reference security critical itemsで参照されているように:
違反を修正する方法
この規則違反を修正するには、次のいずれかを実行します。
セキュリティ クリティカル コードを使用するコード要素をSecurityCriticalAttribute
属性でマークします。
- また -
SecurityCriticalAttribute
セキュリティ クリティカルとしてマークされているコード要素から属性を削除し、代わりにor
属性でマークします。SecuritySafeCriticalAttribute
SecurityTransparentAttribute
pre-JITing を実行するメソッドを でマークする必要があり[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);
}
}
}