.NET Framework 클래스 라이브러리의 사용되지 않는 기능What's obsolete in the .NET Framework class library

.NET Framework는 시간이 지남에 따라 변경됩니다.The .NET Framework changes over time. 새 버전이 나올 때마다 새로운 기능을 제공하는 새로운 형식 및 형식 멤버가 추가됩니다.Each new version adds new types and type members that provide new functionality. 기존 형식과 해당 멤버도 시간이 지남에 따라 변경됩니다.Existing types and their members also change over time. 예를 들어 일부 형식은 지원하는 기술이 새로운 기술로 대체됨에 따라 덜 중요해지고 일부 메서드는 보다 편리하거나 보다 완전한 기능을 갖춘 최신 메서드로 대체됩니다.For example, some types become less important as the technology they support is replaced by a new technology, and some methods are superseded by newer methods that are either more convenient or more full-featured.

.NET Framework 및 공용 언어 런타임은 이전 버전과의 호환성(특정 .NET Framework 버전으로 개발된 애플리케이션이 다음 버전의 .NET Framework에서 실행될 수 있도록 함)을 지원하기 위해 노력합니다.The .NET Framework and the common language runtime strive to support backward compatibility (allowing applications that were developed with one version of the .NET Framework to run on the next version of the .NET Framework). 이 때문에 형식 또는 형식 멤버를 단순히 제거하기 어렵습니다.This makes it difficult to simply remove a type or a type member. 대신, .NET Framework는 사용되지 않음(obsolete) 또는 더 이상 사용되지 않음(deprecated)으로 표시하여 형식 또는 형식 멤버가 더 이상 사용되지 않음을 나타냅니다.Instead, the .NET Framework indicates that a type or a type member should no longer be used by marking it as obsolete or deprecated. 사용 중단의 일부로 형식 또는 멤버를 사용되지 않음으로 표시하면 개발자가 사용이 중단됨을 인식하고 제거에 대응할 시간을 가질 수 있습니다.Deprecating a type or a member involves marking it so that developers are aware it will go away and have time to respond to its removal. 그러나 형식 또는 멤버를 사용하는 기존 코드는 새 버전의 .NET Framework에서 계속 실행됩니다.However, existing code that uses the type or member continues to run in the new version of the .NET Framework.

참고

사용되지 않음(obsolete)사용되지 않음(deprecated) 용어는 .NET Framework의 형식 및 멤버에 적용될 경우 동일한 의미를 가집니다.The terms obsolete and deprecated have the same meaning when applied to the types and members of the .NET Framework.

ObsoleteAttribute 특성The ObsoleteAttribute attribute

.NET Framework는 ObsoleteAttribute 특성으로 표시하여 형식 또는 형식 멤버가 사용되지 않음을 나타냅니다.The .NET Framework indicates that a type or type member is obsolete by marking it with the ObsoleteAttribute attribute. 형식 또는 멤버에 이 특성을 적용하면 .NET Framework의 이후 버전에서 형식 또는 멤버가 해당 멤버를 사용하는 컴파일된 코드의 손상 없이 제거됨을 나타냅니다.Applying the attribute to a type or member indicates that type or member will be removed in some future version of the .NET Framework without breaking compiled code that uses that member.

형식 또는 형식 멤버가 사용되지 않음을 나타낼 뿐 아니라 ObsoleteAttribute는 컴파일러에서 해당 형식 또는 멤버를 포함하는 소스 코드를 처리하는 방법을 정의합니다.In addition to indicating that a type or a type member is obsolete, ObsoleteAttribute defines how the compiler handles source code that includes that type or member. 컴파일러는 코드를 컴파일하지만 경고 메시지를 표시하거나, 형식 또는 멤버 사용을 오류로 처리할 수 있습니다.The compiler can compile the code but emit a warning message, or it can treat the use of the type or member as an error. 첫 번째 경우에는 코드가 성공적으로 컴파일되지만 형식 또는 멤버가 사용되지 않는다는 경고 메시지가 표시됩니다.In the first case, the code can successfully compile, but a warning message indicates that the type or member is obsolete. 두 번째 경우에는 컴파일이 실패합니다.In the second case, compilation fails.

컴파일 시 경고 메시지 대신 오류가 생성되는 경우에도 ObsoleteAttribute는 런타임 동작에 영향을 주지 않습니다.Even if compilation produces an error instead of a warning message, ObsoleteAttribute does not affect run-time behavior. 즉, 형식 또는 멤버를 사용하며 성공적으로 컴파일된 애플리케이션은 항상 성공적으로 실행됩니다.That is, applications that use the type or member and that have compiled successfully will always run successfully. 형식 또는 멤버를 사용하는 애플리케이션을 다시 컴파일하려는 시도만 실패합니다.Only the attempt to recompile an application that uses the type or member fails.

사용되지 않는 형식 및 멤버를 처리하는 방법How to handle obsolete types and members

기존 코드를 업그레이드하고 다시 컴파일할 때 애플리케이션에서 컴파일러 경고를 생성하는 사용되지 않는 형식 또는 멤버를 사용하는 것은 완벽하게 허용됩니다.When you upgrade and recompile existing code, using an obsolete type or member that produces a compiler warning in your application is perfectly acceptable. 그러나 컴파일러 경고 메시지를 검토하여 애플리케이션 코드를 변경해야 하는지 여부를 확인해야 합니다.However, you should review the compiler warning message to determine whether you should change your application code. 메시지에서 적절한 대안을 가리키지 않는 경우 다음 중 하나를 수행해야 합니다.If the message does not point to a suitable alternative, you should do either of the following:

  • 가능한 경우 형식 또는 멤버 사용을 제거하여 코드를 변경합니다.Change your code by removing the use of the type or member, if possible.

    또는-or-

  • 이 기술 영역에 대한 설명서를 검토하여 사용 중단에 대응하는 방법을 확인합니다.Review the documentation for this technology area to determine how to respond to the deprecation.

이후 버전의 .NET Framework에 대해 기존 코드를 다시 컴파일하지 않도록 선택할 수 있습니다.You may choose not to recompile existing code against a later version of the .NET Framework. 대신, 기존의 컴파일된 코드가 실행되는 .NET Framework 버전을 지정할 수 있습니다.Instead, you can specify the version of the .NET Framework against which your existing compiled code runs. 예를 들어 .NET Framework 3.5에 대해 컴파일된 app1.exe라는 애플리케이션이 있지만 .NET Framework 4.5에 대해 애플리케이션을 실행하려 한다고 가정합니다.For example, suppose that you have an application named app1.exe that was compiled against the .NET Framework 3.5, but you want the application to run against the .NET Framework 4.5. 이 경우 다음 단계를 수행해야 합니다.This requires the following steps:

  1. 주 실행 파일에 대한 구성 파일을 만들고 이름을 appName.exe.config로 지정합니다. 여기서 appName은 애플리케이션 실행 파일의 이름입니다.Create a configuration file for your main executable and name it appName.exe.config, where appName is the name of the application executable. 예제에서는 app1.exe라는 애플리케이션에 대해 app1.exe.config라는 구성 파일을 만듭니다.For the application named app1.exe in our example, you would create a configuration file named app1.exe.config.

  2. 구성 파일에 다음 코드를 추가합니다.Add the following to the configuration file.

    <configuration>
       <startup> 
          <supportedRuntime version="v4.0" />
       </startup>
    </configuration>
    

다음 표에서는 특정 버전의 .NET Framework를 대상으로 지정하기 위해 version 특성에 할당할 수 있는 문자열 값을 보여 줍니다.The following table lists the string values that you can assign to the version attribute to target a specific version of the .NET Framework:

.NET Framework 버전.NET Framework version version 문자열version string
4.84.8 v4.0v4.0
4.7(4.7.1 및 4.7.2 포함)4.7 (including 4.7.1 and 4.7.2) v4.0v4.0
4.6(4.6.1 및 4.6.2 포함)4.6 (including 4.6.1 and 4.6.2) v4.0v4.0
4.5(4.5.1 및 4.5.2 포함)4.5 (including 4.5.1 and 4.5.2) v4.0v4.0
44 v4.0v4.0
3.53.5 v2.0.50727v2.0.50727
2.02.0 v2.0.50727v2.0.50727
1.11.1 v1.1.4322v1.1.4322
1.01.0 v1.0.3705v1.0.3705

.NET Framework 4.5 이상 버전에서 사용되지 않는 항목 목록Obsolete lists for the .NET Framework 4.5 and later versions

이전 버전에서 사용되지 않는 항목 목록Obsolete lists for previous versions

참고 항목See also