Condividi tramite


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

Vedere anche

Altre risorse

Avvisi di portabilità

Scelta di una versione specifica di .NET Framework