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
Destinando uma versão do .NET Framework específica ou perfil