다음을 통해 공유


CA1903: 대상 프레임워크에서 API만 사용하십시오.

TypeName

UseOnlyApiFromTargetedFramework

CheckId

CA1903

범주

Microsoft.Portability

변경 수준

주요 변경 - 외부에서 볼 수 있는 멤버 또는 형식의 시그너처에 대해 발생한 경우

주요 변경 아님 – 메서드 본문에서 발생한 경우

원인

멤버 또는 형식이 프로젝트의 대상 프레임워크에 포함되지 않은 서비스 팩에 도입된 멤버 또는 형식을 사용합니다.

규칙 설명

새로운 멤버 및 형식이 .NET Framework 2.0 서비스 팩 1과 2, .NET Framework 3.0 서비스 팩 1과 2 및 .NET Framework 3.5 서비스 팩 1에 포함되었습니다. .NET Framework의 주요 버전을 대상으로 하는 프로젝트가 이러한 새로운 프로젝트에 대한 종속성을 본의 아니게 사용할 수 있습니다. 이러한 종속성이 발생하지 않도록 하기 위해 프로젝트의 대상 프레임워크에 기본적으로 포함되지 않은 새로운 멤버 및 형식을 사용하게 되면 이 규칙이 실행됩니다.

대상 프레임워크 및 서비스 팩 종속성

대상 프레임워크

다음에 도입된 멤버를 사용할 경우 발생

.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

N/A

프로젝트의 대상 프레임워크를 변경하려면 특정 .NET Framework 버전 또는 프로필을 대상으로 지정을 참조하십시오.

위반 문제를 해결하는 방법

서비스 팩에 대한 종속성을 없애려면 새 멤버 또는 형식의 모든 사용을 제거합니다. 의도적인 종속성인 경우에는 경고를 비활성화하거나 이 규칙을 해제합니다.

경고를 표시하지 않는 경우

지정된 서비스 팩에 대한 의도적인 종속성이 아닌 경우에는 이 규칙에서 경고를 표시해야 합니다. 이 경우 이 서비스 팩을 설치하지 않으면 시스템에서 응용 프로그램이 실행되지 않을 수 있습니다. 의도적인 종속성인 경우에는 경고를 비활성화하거나 이 규칙을 해제합니다.

예제

다음 예제에서는 .NET 2.0 서비스 팩 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; }
        }
    }
}

참고 항목

기타 리소스

이식성 경고

특정 .NET Framework 버전 또는 프로필을 대상으로 지정