CA1903: Nur API aus Zielframework verwenden
TypeName |
UseOnlyApiFromTargetedFramework |
CheckId |
CA1903 |
Kategorie (Category) |
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 aufgenommen.Projekte, die auf die Hauptversionen von .NET Framework abzielen, können unabsichtlich Abhängigkeiten von diesen neuen APIs zeigen.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 |
.NET Framework 4 |
Nicht zutreffend |
Weitere Informationen zum Ändern des Zielframeworks eines Projekts finden Sie unter Ausrichten auf eine bestimmte .NET Framework-Version oder ein bestimmtes .NET Framework-Profil.
Behandeln von Verstößen
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 sollten Warnungen unterdrückt werden?
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
Im folgenden Beispiel wird eine Klasse gezeigt, die den Typ DateTimeOffset verwendet, der nur in .NET 2.0 Service Pack 1 verfügbar ist.Dieses Beispiel erfordert, dass .NET Framework 2.0 in der Dropdownliste Zielframework in den Projekteigenschaften ausgewählt wurde.
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; }
}
}
}
Siehe auch
Weitere Ressourcen
Ausrichten auf eine bestimmte .NET Framework-Version oder ein bestimmtes .NET Framework-Profil