CA2135: Level 2 assemblies should not contain LinkDemands
Visual Studio 2010
TypeName | SecurityRuleSetLevel2MethodsShouldNotBeProtectedWithLinkDemands |
CheckId | CA2135 |
Category | Microsoft.Security |
Breaking Change | Breaking |
A class or class member is using a LinkDemand in an application that is using Level 2 security.
LinkDemands are deprecated in the level 2 security rule set. Instead of using LinkDemands to enforce security at just-in-time (JIT) compilation time, mark the methods, types, and fields with the SecurityCriticalAttribute attribute.
To fix a violation of this rule, remove the LinkDemand and mark the type or member with the SecurityCriticalAttribute attribute.
In the following example, the LinkDemand should be removed and the method marked with the SecurityCriticalAttribute attribute.
using System; using System.Security; using System.Security.Permissions; namespace TransparencyWarningsDemo { public class MethodsProtectedWithLinkDemandsClass { // CA2135 violation - the LinkDemand should be removed, and the method marked [SecurityCritical] instead [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)] public void ProtectedMethod() { } } }