更新 : 2007 年 11 月
TypeName |
UseOnlyApiFromTargetedFramework |
CheckId |
CA1903 |
カテゴリ |
Microsoft.Portability |
互換性に影響する変更点 |
あり - 外部から参照できるメンバまたは型のシグネチャに対して適用された場合。 なし - メソッドの本体で適用された場合。 |
原因
メンバまたは型が、プロジェクトの対象のフレームワークに含まれていない Service Pack で導入されたメンバまたは型を使用しています。
規則の説明
新しいメンバと型は、.NET Framework 2.0 Service Pack 1 および Service Pack 2、.NET Framework 3.0 Service Pack 1 および Service Pack 2、.NET Framework 3.5 Service Pack 1 で導入されました。メジャー バージョンの .NET Framework を対象とするプロジェクトでは、意図せずにこれらの新しい API に依存する可能性があります。このような依存関係を回避するために、この規則は、既定でプロジェクトのターゲット フレームワークに含まれなかったすべての新しいメンバと型の使用に適用されます。
ターゲット フレームワークと Service Pack の依存関係
ターゲット フレームワーク |
規則が適用されるメンバが導入された Service Pack |
.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 を対象にする」を参照してください。
違反の修正方法
Service Pack への依存関係を削除するには、新しいメンバまたは型のすべての使用を削除します。これが意図的な依存関係である場合は、警告を抑制するか、この規則を無効にします。
警告を抑制する状況
指定した Service Pack への意図的な依存関係でない場合は、この規則による警告を抑制しないでください。この場合、この Service Pack がインストールされていないシステムでは、アプリケーションを実行できないことがあります。これが意図的な依存関係である場合は、警告を抑制するか、この規則を無効にします。
使用例
.NET 2.0 Service Pack 1 のみで使用できる DateTimeOffset 型を使用するクラスを次の例に示します。この例では、プロジェクトのプロパティで [対象のフレームワーク] ドロップダウン リストの [.NET Framework 2.0] が選択されている必要があります。
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; }
}
}
}
DateTimeOffset 型を 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; }
}
}
}