Utilizzare solo API della versione di .NET Framework di destinazione
Aggiornamento: novembre 2007
TypeName |
UseOnlyApiFromTargetedFramework |
CheckId |
CA1903 |
Category |
Microsoft.Portability |
Breaking Change |
Sostanziale: in caso di generazione rispetto alla firma di un membro o tipo esternamente visibile. Non sostanziale: in caso di generazione nel corpo di un metodo. |
Causa
Un membro o un tipo sta utilizzando un membro o un tipo introdotto in un service pack non incluso nella versione di .NET Framework di destinazione del progetto.
Descrizione della regola
In .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 sono stati aggiunti nuovi membri e tipi. I progetti destinati alle versioni principali di .NET Framework possono erroneamente acquisire una dipendenza da queste nuove API. Per impedire la dipendenza, questa regola viene eseguita in caso di utilizzo di nuovi membri e tipi non inclusi per impostazione predefinita nella versione di .NET Framework di destinazione del progetto.
Dipendenze dalla versione di .NET Framework di destinazione e dai service pack
Quando la versione di .NET Framework di destinazione è |
La regola viene eseguita in caso di utilizzo di membri introdotti in |
.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 |
Per modificare la versione di .NET Framework di destinazione di un progetto, vedere Scelta di una versione specifica di .NET Framework.
Correzione delle violazioni
Per rimuovere la dipendenza dal service pack, rimuovere tutti gli utilizzi del nuovo membro o tipo. Se la dipendenza è intenzionale, eliminare l'avviso o disattivare la regola.
Soppressione degli avvisi
Non eliminare un avviso dalla regola se la dipendenza dal service pack specificato non è intenzionale. In questa situazione, è possibile che l'applicazione non venga eseguita nei sistemi in cui il service pack non è installato. Se la dipendenza è intenzionale, eliminare l'avviso o disattivare la regola.
Esempio
Nell'esempio seguente viene mostrata una classe che utilizza il tipo DateTimeOffset disponibile solo in .NET 2.0 Service Pack 1. Ai fini dell'esempio è necessario che .NET Framework 2.0 sia stato selezionato nell'elenco a discesa Versione .NET Framework di destinazione nelle proprietà del progetto.
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; }
}
}
}
Nell'esempio seguente viene risolta la violazione descritta in precedenza tramite la sostituzione degli utilizzi del tipo DateTimeOffset con il 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; }
}
}
}