Compartilhar via


CA1903: usar apenas a API da estrutura de destino

TypeName

UseOnlyApiFromTargetedFramework

CheckId

CA1903

Categoria

Microsoft.Portability

Alteração Significativa

Interromper - quando é acionado na assinatura de um membro ou de um tipo externamente visível.

Interrompendo não - quando é acionado no corpo de um método.

Causa

Um membro ou um tipo está usando um membro ou um tipo que foram introduzidos em um pacote de serviços que não é incluído com a estrutura de destino do projeto.

Descrição da Regra

Os novos membros e os tipos foram incluídos no .NET Framework 2.0 Service Pack 1 e 2, o.NET Framework 3.0 Service Pack 1 e 2, e o.NET Framework 3.5 Service Pack 1.Os projetos que visam versões principais do .NET Framework podem querer fazer dependências nesses novos APIs.Para evitar essa dependência, esta regra é acionado em usos de quaisquer novos membros e tipos que não sejam incluídos por padrão na estrutura de destino do projeto.

Estrutura de destino e dependências do Service Pack

Quando a estrutura de destino esteja

É acionado em utilização dos membros apresentados em

.NET Framework 2.0

o.NET Framework 2.0 SP1, o .NET Framework 2.0 SP2

.NET Framework 3.0

FRAMEWORK .NET 2.0 SP1, FRAMEWORK .NET 2.0 SP2, FRAMEWORK .NET 3.0 SP1, FRAMEWORK .NET 3.0 SP2

.NET Framework 3.5

.NET Framework 3.5 SP1

.NET Framework 4

N/D

Para alterar a estrutura de destino de um projeto, consulte Destinando uma versão do .NET Framework específica ou perfil.

Como Corrigir Violações

Para remover a dependência no service pack, remova todos os usos do novo membro ou linear.Se esta é uma dependência deliberada, ou suprimir o aviso ou cancelar esta regra.

Quando Suprimir Alertas

Não suprima um aviso dessa regra se essa não é uma dependência deliberada no pacote de serviços especificado.Nessa situação, o aplicativo pode não é executado em sistemas sem este service pack instalado.Suprimir o aviso ou desconectar essa regra se essa fosse uma dependência deliberada.

Exemplo

O exemplo a seguir mostra uma classe que usa o tipo DateTimeOffset que só está disponível no .NET 2.0 Service Pack 1.Este exemplo requer que o .NET Framework 2.0 esteve selecionado na lista suspensa da estrutura de destino nas propriedades do projeto.

using System;
namespace Samples
{
    public class LibraryBook
    {
        private readonly string _Title;
        private DateTimeOffset _CheckoutDate;   // Violates this rule 
        public LibraryBook(string title)
        {
            _Title = title;
        }
        public string Title
        {
        get { return _Title; }
        }
        public DateTimeOffset CheckoutDate      // Violates this rule
        {
            get { return _CheckoutDate; }
            set { _CheckoutDate = value; }
        }
    }
}

O exemplo a seguir corrige a violação previamente descrita substituindo pelo tipo de DateTimeOffset com o tipo DateTime.

using System;
namespace Samples
{
    public class LibraryBook
    {
        private readonly string _Title;
        private DateTime _CheckoutDate;
        public LibraryBook(string title)
        {
            _Title = title;
        }
        public string Title
        {
            get { return _Title; }
        }
        public DateTime CheckoutDate
        {
            get { return _CheckoutDate; }
            set { _CheckoutDate = value; }
        }
    }
}

Consulte também

Outros recursos

Avisos de portabilidade

Destinando uma versão do .NET Framework específica ou perfil