CA2135: Los ensamblados de nivel 2 no deben contener LinkDemandsCA2135: Level 2 assemblies should not contain LinkDemands

TypeNameTypeName SecurityRuleSetLevel2MethodsShouldNotBeProtectedWithLinkDemandsSecurityRuleSetLevel2MethodsShouldNotBeProtectedWithLinkDemands
Identificador de comprobaciónCheckId CA2135CA2135
CategoríaCategory Microsoft.SecurityMicrosoft.Security
Cambio problemáticoBreaking Change ProblemáticoBreaking

MotivoCause

Una clase o miembro de clase está usando un SecurityAction en una aplicación que usa la seguridad de nivel 2.A class or class member is using a SecurityAction in an application that is using Level 2 security.

Descripción de la reglaRule Description

LinkDemands está desusado en el conjunto de reglas de seguridad de nivel 2.LinkDemands are deprecated in the level 2 security rule set. En lugar de utilizar LinkDemands para exigir la seguridad en tiempo de compilación just-in-time (JIT), marque los métodos, tipos y campos con el SecurityCriticalAttribute atributo.Instead of using LinkDemands to enforce security at just-in-time (JIT) compilation time, mark the methods, types, and fields with the SecurityCriticalAttribute attribute.

Cómo corregir infraccionesHow to Fix Violations

Para corregir una infracción de esta regla, quite el SecurityAction y marque el tipo o miembro con el SecurityCriticalAttribute atributo.To fix a violation of this rule, remove the SecurityAction and mark the type or member with the SecurityCriticalAttribute attribute.

Cuándo suprimir advertenciasWhen to Suppress Warnings

No suprima las advertencias de esta regla.Do not suppress a warning from this rule.

EjemploExample

En el ejemplo siguiente, la SecurityAction debe quitarse y el método se marca con el SecurityCriticalAttribute atributo.In the following example, the SecurityAction 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()
        {
        }
    }
}