Partilhar via


CA1903: Usar apenas uma API do framework de destino

TypeName

UseOnlyApiFromTargetedFramework

CheckId

CA1903

<strong>Categoria</strong>

Microsoft.Portability

Alteração significativa

Quebrando - quando acionado contra a assinatura de um tipo ou membro visível externamente.

Não separável - quando acionado no corpo de um método.

Causa

Um tipo ou membro está usando um membro ou um tipo que foi introduzido em um service pack que não foi incluído com o framework de destino do projeto.

Descrição da regra

Tipos e novos membros foram incluídos no.NET Framework 2.0 Service Pack 1 e 2.NET Framework 3.0 Service Pack 1 e 2, e.NET Framework 3.5 Service Pack 1.Projetos que visam as versões principais do.NET Framework, inadvertidamente, podem assumir dependências dessas novas APIs.Para evitar essa dependência, essa regra é acionado em usos de quaisquer novos membros e tipos que não foram incluídos por padrão com o framework de destino do projeto.

Estrutura e as dependências do pacote de serviço de destino

Quando está a estrutura de destino

É acionado em usos de membros, introduzidos no

.NET Framework 2.0

.NET Framework 2.0 SP1.NET Framework 2.0 SP2

.NET Framework 3.0

.NET Framework 2.0 SP1.NET Framework 2.0 SP2.NET Framework 3.0 SP1.NET Framework 3.0 SP2

.NET Framework 3.5

.NET Framework 3.5 SP1

.NET Framework 4

N/A

Para alterar a estrutura de destino de um projeto, consulte Almejando um específico.NET Framework versão ou perfil.

Como corrigir violações

Para remover a dependência no service pack, remova todos os usos do novo membro ou tipo.Se esta for uma dependência deliberada, eliminar o aviso ou desativar esta regra.

Quando suprimir avisos

Não suprimir um aviso de que essa regra se isso não era uma dependência deliberada o service pack especificado.Nessa situação, seu aplicativo pode falhar sejam executados em sistemas sem este service pack instalado.Eliminar o aviso ou desative esta regra se esta foi uma dependência deliberada.

Exemplo

O exemplo a seguir mostra uma classe que usa o tipo DateTimeOffset só está disponível no.NET 2.0 Service Pack 1.Este exemplo requer.NET Framework 2.0 foi selecionado na lista suspensa Target Framework 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 descrita anteriormente, substituindo os usos do tipo 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

Almejando um específico.NET Framework versão ou perfil