2012-10-01 6 views
0

내 질문은 similar to this이지만 이전 버전의 .NET에서 다른 버전의 C#을 사용할 수 있는지 알고 싶습니다. 내 머리 속에는 예를 들어 람다가 프레임 워크와 관련해서는 아무 것도 할 것이 없기 때문에 가능할 것입니다. 그것은 C# (그리고 VB이지만 C#에 대해서만 말하고 있습니다)입니다.언어 버전 및 .net 버전

문제는이 제품을 VS 2005가 직장에서만 사용하고 내 집 PC가 고장난 것으로서 테스트 할 수 없다는 것입니다.

그래서 VS 2010/2012에 .NET 2.0 프로젝트를 만들 때 lambda/Linq 등을 사용할 수 있습니까?

답변

1

대상 프레임 워크를 2.0으로 설정하고 Visual Studio 2010을 사용하는 경우 람다 식을 사용할 수 있습니다. 프레임 워크는 닷넷에 소개 된 이후하지만, 상자 밖으로 LINQ를 사용할 수 없습니다 3.5

당신은 문서를 참조한다

: Untangling the Versions by Jon Skeet

+1

"당신은 LINQ를 사용할 수 없습니다"라는 담요는 조금 강하다. LINQ는 기본적으로 사용할 수 없지만 약간의 작업으로 LINQ의 * 일부 * 측면을 사용할 수 있습니다. –

+0

@JonSkeet, 고마워, 내가 의미하는 바는 기성복이었다. 나는 LINQBridge를 사용하지 않았다.나는 당신의 의견을 반영하기 위해 나의 대답을 수정했다. – Habib

0

언어 버전과 프레임 워크 버전이 실제로 함께 묶여 및 Visual Studio를 또한 프로젝트 설정에 따라 사용 가능한 기능을 결정합니다.

.NET 2.0 프로젝트의 경우 LINQ는 C# 2.0과 C# 3.0 (LINQ가 도입되었을 때, 확장 메서드이기 때문에)에 연결되므로 LINQ를 사용할 수 없습니다.

3.0 및 3.5 프레임 워크는 02 런타임을 사용합니다.

4

그래서 VS 2010/2012에서 .NET 2.0 프로젝트를 만들 때 lamda/Linq 등을 사용할 수 있습니까?

저는 page for exactly this sort of thing입니다. 일부 기능은 프레임 워크 특정 (또는 CLR 특정)이며 일부 기능은 그렇지 않습니다.

예를 들어 람다 식, 익명 형식 및 .NET 2.0에서 자동으로 구현 된 속성을 문제없이 사용할 수 있습니다.

LINQBridge과 같은 대체 구현을 제공하면 LINQ to Objects를 사용할 수 있습니다. 다른 LINQ 공급자 (LINQ to SQL 등)는 Mono의 라이브러리를 사용하여 명백하게 가능할 수 있지만 가능한 경우 개인적으로 차후 버전의 프레임 워크로 업그레이드하려고합니다.

C# 4의 동적 입력을 사용할 수 없습니다. .NET 4에서만 제공되는 형식이 필요하며 호환 가능한 방식으로 백 포트하기 쉽지 않습니다. (그것은 적어도 는 .NET 3.5에 대한 DLR의 버전 거기로 가능하지만 멋지게 C# 4 컴파일러로 재생되는지 여부는 다른 문제입니다 수 있습니다.)

+0

하 - 나의 질문 중 마지막 몇 가지는 당신의 싱글 톤 패턴의 예를 기반으로했다. 나는 그것이 내가 노력하고있는 많은 부분을 다루는 것처럼 보이기 때문에 정말로 책을 사야한다고 생각한다. 이해하다. :) – Dave

+0

컴파일러는 동적 유형을 만들 수는 있지만 어떤 식 으로든 사용할 수는 없습니다! * var sb = new StringBuilder(); 동적 dsb = sb; * 오류없이 컴파일하지만 dsb 메소드에 액세스 할 수 없습니다! 나는 이것이 귀하의 의견대로 .NET 4.0이 필요한 것 같아요. – Dave

+0

@DaveRook : 네, 그렇습니다. 나는 실제로 그렇게 많이 놀랍습니다. –

0

언어가와 컴파일러가 있으며 CLR이 있습니다. CLR 2.0에서 .NET 2.0, 3.0 및 3.5를 실행할 수 있습니다. CLR 2.0에서는 .NET 4 기능을 사용할 수 없습니다.

따라서 프로젝트를 .NET 3.5로 설정하고 .NET 3.5가 설치된 컴퓨터에서 컴파일 한 다음 .NET 2.0이 설치된 컴퓨터에서 실행할 수 있습니다.

+0

2.0에없는 유형이나 멤버를 사용하지 않으려면 2.0으로 타겟팅하고 싶을 것입니다. –