Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
| TypeName | SecurityRuleSetLevel2MethodsShouldNotBeProtectedWithLinkDemands | 
| CheckId | CA2135 | 
| Category | Microsoft.Security | 
| Breaking Change | Breaking | 
Cause
A class or class member is using a LinkDemand in an application that is using Level 2 security.
Rule Description
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.
How to Fix Violations
To fix a violation of this rule, remove the LinkDemand and mark the type or member with the SecurityCriticalAttribute attribute.
When to Suppress Warnings
Do not suppress a warning from this rule.
Example
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()
        {
        }
    }
}