Ausschließliches Verwenden der API aus dem Zielframework
Aktualisiert: November 2007
TypeName |
UseOnlyApiFromTargetedFramework |
CheckId |
CA1903 |
Kategorie |
Microsoft.Portability |
Unterbrechende Änderung |
Unterbrechend – Bei Auslösung gegen die Signatur eines extern sichtbaren Members oder Typs. Nicht unterbrechend – Bei Auslösung im Text einer Methode. |
Ursache
Ein Member oder Typ verwendet ein Member oder einen Typ, das bzw. der in einem Service Pack eingeführt wurde, das nicht im Zielframework des Projekts enthalten ist.
Regelbeschreibung
In .NET Framework 2.0 Service Pack 1 und 2, .NET Framework 3.0 Service Pack 1 und 2 sowie .NET Framework 3.5 Service Pack 1 wurden neue Member und Typen eingeführt. Projekte, die die Hauptversionen von .NET Framework verwenden, können unbeabsichtigt Abhängigkeiten zu diesen neuen APIs aufweisen. Um derartige Abhängigkeiten zu vermeiden, wird diese Regel bei Verwendung aller neuen Member und Typen ausgelöst, die nicht standardmäßig im Zielframework des Projekts enthalten waren.
Zielframework und Service Pack-Abhängigkeiten
Verwendetes Zielframework |
Auslösung bei Verwendung von Membern aus |
.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 |
Weitere Informationen zum Ändern des Zielframeworks eines Projekts finden Sie unter Festlegen eines bestimmten .NET Framework als Ziel.
Verstoßbehandlung
Um die Abhängigkeit vom Service Pack zu entfernen, entfernen Sie alle Verwendungen des neuen Members oder Typs. Wenn es sich um eine absichtliche Abhängigkeit handelt, können Sie die Warnung unterdrücken oder diese Regel deaktivieren.
Wann Warnungen unterdrückt werden sollten
Unterdrücken Sie die durch diese Regel ausgelöste Warnung nicht, wenn dies keine absichtliche Abhängigkeit von dem jeweiligen Service Pack ist. In diesem Fall kann die Anwendung in Systemen, in denen dieses Service Pack nicht installiert ist, möglicherweise nicht mehr ausgeführt werden. Bei einer absichtlichen Abhängigkeit können Sie die Warnung unterdrücken oder diese Regel deaktivieren.
Beispiel
Das folgende Beispiel zeigt eine Klasse, die den Typ DateTimeOffset verwendet, der nur in .NET 2.0 Service Pack 1 verfügbar ist. Dieses Beispiel setzt voraus, dass in den Projekteigenschaften in der Dropdown-Liste Zielframework .NET Framework 2.0 ausgewählt ist.
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; }
}
}
}
Im folgenden Beispiel wird der vorherige Verstoß behoben, indem der Typ DateTimeOffset durch den Typ DateTime ersetzt wird.
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; }
}
}
}