Condividi tramite


CA1903: Utilizzare solo API della versione di .NET Framework di destinazione

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

I nuovi membri e tipi erano inclusi 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.Progetti che vengono 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

.NET Framework 4

N/D

Per modificare la versione di .NET Framework di destinazione di un progetto, vedere Scelta di una versione o profilo di .NET Framework specifico.

Come correggere le 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.

Esclusione di 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 nella Service Pack 1 di .NET 2.0.Questo esempio richiede che sia stato selezionato .NET Framework 2.0 nell'elenco a discesa 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; }
        }
    }
}

Vedere anche

Altre risorse

Avvisi di portabilità

Scelta di una versione o profilo di .NET Framework specifico