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
Przeznaczanie dla określonej wersji platformy .NET lub profilu