문제

2.0 대신 .NET Framework 3.5로 컴파일하면 어떤 이점이 있나요?

예를 들어 메모리 소비 감소, 시작 속도 향상, 성능 향상...

개인적으로는 그렇지 않다고 생각합니다만, 제가 놓친 부분이 있을 수도 있습니다.

편집하다:물론 3.5 프레임워크에는 더 많은 기능이 있지만 이것이 이 질문의 초점은 아닙니다.

편집2:장점은 없는 것 같습니다.

편집3:예, 프레임워크를 대상으로 한다는 의미였습니다.최신 3.5 SP1과 VS 2008을 설치했는데 프레임워크로 컴파일하는 것과 프레임워크를 대상으로 하는 것의 차이점은 무엇입니까?프로젝트 옵션에서 프레임워크를 대상으로 지정할 수 있지만 특정 프레임워크 버전으로 '컴파일'하려면 어떻게 해야 합니까?나는 차이가 있다는 것을 몰랐다.

편집4:따라서 현재로서는 이점이 없다는 데 동의합니다.

의견을 보내주셔서 감사합니다.

도움이 되었습니까?

해결책

컴파일과 타겟팅에는 차이가 있습니다.

예를 들어 C# 3.0 컴파일러를 사용하여 코드를 컴파일하면 생성된 IL 코드에 대한 일부 최적화가 포함되었기 때문에 성능이 향상될 것입니다(어쨌든 아주 약간).또한 자동 속성이나 람다 표현식과 같은 일부 새로운 기능을 사용할 수도 있습니다.

지정된 프레임워크를 대상으로 지정하면 어셈블리가 해당 프레임워크(및 사후)에서 작동하도록 보장하며 2.0을 대상으로 하고 3.5 라이브러리를 사용하는 경우 실패합니다.한 프레임워크의 클래스를 다른 "가장 빠른" 클래스로 대체하지 않는 한 성능 향상은 이와 직접적으로 관련되지 않습니다.예를 들어, .NET 1.1을 대상으로 하면 제네릭을 사용할 수 없으므로 List보다 상당히 느린 ArrayList를 사용해야 합니다(boxing 및 unboxing으로 인해).

다른 팁

.NET 2.0 및 .NET 3.5와 관련하여 기억해야 할 두 가지 사항이 있습니다.

  1. .NET Framework 3.5는 .NET 2.0 위에서 실행되는 몇 가지 라이브러리에 불과합니다.
  2. Visual Studio 2008에서 개발하고 .NET 2.0을 대상으로 하는 경우 확장 메서드와 같은 특정 C# 3.0 언어 기능은 실제로 C# 3.0(또는 .NET 3.5) 컴파일러의 기능이므로 계속 사용할 수 있습니다.이 링크를 참조하세요: http://www.codethinked.com/post/2008/02/Using-Extension-Methods-in-net-20.aspx

나는 아무것도 찾지 못했습니다.명백한 불리, 3.5 특정 기능이 필요하지 않은 경우 3.5 코드 베이스가 더 젊기 때문에 가능성은 낮지만 주변에 버그가 숨어 있을 가능성이 있습니다.

해당 프레임워크 버전의 클래스를 사용하지 않는 경우 3.5 프레임워크로 컴파일해도 이점이 없습니다.

컴파일을 위해 .NET 3.5 프레임워크를 대상으로 해야 한다고 생각하시나요?그렇다면 다른 사람들이 말했듯이 나는 당신이 큰 차이를 볼 것이라고 믿지 않습니다.

그러나 업데이트된 컴파일러 사용에 대해 이야기하는 경우 다음 링크에 C# 및 VB 모두에 대한 다양한 변경 사항 및 중단 변경 사항이 설명되어 있습니다.

Visual Studio의 각 버전에는 서로 다른 컴파일러가 제공된다고 생각합니다.예를 들어 C#의 경우 2.0 컴파일러는 Visual Studio 2005와 함께 제공되고 C# 3.0은 Visual Studio 2008과 함께 제공됩니다.사용하는 Visual Studio 버전에 따라 다른 컴파일러가 사용됩니다.

프레임워크 대상 지정은 컴파일 프로세스 중에 대상으로 지정하려는 프레임워크 버전을 구체적으로 나타냅니다.대상 프레임워크는 Visual Studio 2008의 새로운 기능입니다.예를 들어 Visual Studio 2008에서 솔루션을 열고 .Net v2.0을 대상으로 할 수 있습니다.결과적으로 해당 컴파일 중에 WPF와 같은 3.0 또는 3.5 .Net 기능을 사용할 수 없게 됩니다.

.NET 어셈블리가 .NET 3.5를 대상으로 하는 경우 결과 애플리케이션은 .NET 3.5 라이브러리를 찾고 필요하게 됩니다.이러한 라이브러리에는 .NET 2.0 프레임워크에 없는 수많은 추가 클래스가 포함되어 있으므로 해당 라이브러리를 대상으로 하는 것이 유리할 것입니다.

그러나 예를 들어 다음과 같이 제공되는 C# 3.0 컴파일러를 사용하여 C# 코드를 컴파일하는 경우Visual Studio 2008 및 .NET 3.5에 적합 하지만 어셈블리 대상이 .NET 2.0인 경우에는 여전히 일반 .NET 2.0 라이브러리만 필요하며, 그럼에도 불구하고 실제로는 특정 .NET 3.5 컴파일러 기능을 사용합니다. 이러한 기능 중 상당수는 결국 .NET 2.0 코드만 사용하기 때문입니다. .이에 대한 자세한 내용은 여기를 참조하세요. http://weblogs.asp.net/shahar/archive/2008/01/23/use-c-3-features-from-c-2-and-net-2-0-code.aspx

3.5에는 2.0에는 없는 클래스가 있습니다.예를 들어 Func<...>.2.0을 목표로 하면 사용할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top