Udostępnij za pośrednictwem


CA1903: Używaj tylko API z frameworku docelowego

TypeName

UseOnlyApiFromTargetedFramework

CheckId

CA1903

Kategoria

Microsoft.Portability

Złamanie zmiany

Przerywanie - gdy opalane przeciwko podpisu widocznego zewnętrznie członka lub typem.

Bez dzielenia - gdy zwolniony w treści metody.

Przyczyna

Używa członka lub typ członka lub typu, który został wprowadzony w dodatku service pack, który nie został uwzględniony w ramach ukierunkowanych projektów.

Opis reguły

Nowych członków i typy zostały włączone.NET Framework 2.0 z dodatkiem Service Pack 1 i 2.NET Framework 3.0 z dodatkiem Service Pack 1 i 2, i.NET Framework 3.5 z dodatkiem Service Pack 1.Projekty, które docelowe główne wersje.NET Framework można przypadkowo podjąć zależności na tych nowych interfejsów API.Aby zapobiec tej zależności, ta reguła pożary na zwyczajów, wszelkich nowych członków i typów, które nie zostały uwzględnione domyślnie z ramami docelowego projektu.

Docelowe ramy i Service Pack zależności

Gdy jest ramy docelowej

Pożary na zwyczajów członków wprowadzone w

.NET Framework 2.0

.NET Framework 2.0 z dodatkiem SP1.NET Framework 2.0 z dodatkiem SP2

.NET Framework 3.0

.NET Framework 2.0 z dodatkiem SP1.NET Framework 2.0 z dodatkiem SP2.NET Framework 3.0 z dodatkiem SP1.NET Framework 3.0 z dodatkiem SP2

.NET Framework 3.5

.NET Framework 3.5 z dodatkiem SP1

.NET Framework 4

N/D!

Aby zmienić ramy docelowego projektu, zobacz Przeznaczanie dla określonej wersji platformy .NET lub profilu.

Jak naprawić naruszenia

Aby usunąć zależność od dodatku service pack, należy usunąć wszystkie zastosowania nowego członka lub typu.Jeśli jest to zamierzone zależność, ostrzeżenia lub wyłączyć tę regułę.

Kiedy do pomijania ostrzeżenia

Nie pomijaj ostrzeżenie od tej reguły, jeśli nie było zamierzone zależność od pack określonej usługi.W tej sytuacji aplikacja może nie działają bez tego dodatku service pack zainstalowany w systemach.Ostrzeżenia lub wyłączyć tę regułę, jeśli było to zamierzone zależność.

Przykład

Klasa, która używa typu DateTimeOffset, który jest dostępny tylko w poniższym przykładzie.NET 2.0 z dodatkiem Service Pack 1.W tym przykładzie wymaga, aby.NET Framework 2.0 został wybrany na liście rozwijanej ramy docelowej we właściwościach projektu.

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

Poniższy przykład rozwiązuje opisany wcześniej naruszenie przez zastąpienie zwyczajów typu DateTimeOffset typu 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; }
        }
    }
}

Zobacz też

Inne zasoby

Ostrzeżenia przenośności

Przeznaczanie dla określonej wersji platformy .NET lub profilu