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; }
}
}
}