programing

C# 6.0은 에 적용됩니까?NET 4.0?

instargram 2023. 5. 7. 10:57
반응형

C# 6.0은 에 적용됩니까?NET 4.0?

저는 C#6.0 goodies - null 전파 및 속성 초기화를 예로 들어 대상 버전 설정을 사용하여 샘플 프로젝트를 만들었습니다.NET 4.0과 그...작동하다.

public class Cat
{
    public int TailLength { get; set; } = 4;

    public Cat Friend { get; set; }

    public string Mew() { return "Mew!"; }
}

class Program
{
    static void Main(string[] args)
    {
        var cat = new Cat {Friend = new Cat()};
        Console.WriteLine(cat?.Friend.Mew());
        Console.WriteLine(cat?.Friend?.Friend?.Mew() ?? "Null");
        Console.WriteLine(cat?.Friend?.Friend?.TailLength ?? 0);
    }
}

대상 소프트웨어에 C# 6.0 기능을 사용할 수 있다는 뜻입니까?NET 4.0?제한이나 단점이 있습니까?

네(대부분).C# 6.0에는 새 Roslin 컴파일러가 필요하지만 새 컴파일러는 이전 프레임워크 버전을 대상으로 컴파일할 수 있습니다.이는 프레임워크의 지원이 필요 없는 새로운 기능으로 제한됩니다.

예를 들어, C# 6.0의 문자열 보간 기능을 이전 버전의 .Net과 함께 사용할 수 있지만 다음과 같은 경우에는string.Format):

int i = 3;
string s = $"{i}";

필요합니다.Net 4.6을 사용하여IFormattable새 프레임워크 버전만 추가됩니다.System.FormattableString:

int i = 3;
IFormattable s = $"{i}";

말씀하신 사례들은 프레임워크의 유형이 필요하지 않습니다.따라서 컴파일러는 이전 프레임워크 버전에서 이러한 기능을 완전히 지원할 수 있습니다.

위키백과와 다른 링크들을 이해하는 방법에 초점을 맞추고 싶습니다.

위키백과에서 C# 6.0은 와 함께라고 말할 때.NET Framework 4.6은 단순히 컴파일러의 프로덕션 버전(msc.exe)이 의 일부가 된다는 것을 의미합니다.NET Framework 4.6 릴리스.다중 대상을 통해 이러한 컴파일러는 의 하위 버전을 지원할 수 있습니다.NET Framework 릴리스.물론, Roslin이 오픈 소스 프로젝트가 되었기 때문에, 컴파일러는 이제 완전히 개별 구성 요소가 되었습니다.

어떤 것이 4.0.30319(.0)의 CLR 버전을 참조할 때 실제로는 그럴 수 있습니다.CLR 버전 4 사양을 모두 구현하는 NET Framework 4.*(4.0, 4.0.*, 4.5, 4.5.*, 4.6, 4.6.*).Xamarin/Mono는 말할 것도 없이 동일한 CLR 사양을 참조하십시오.

MSDN 페이지가 아직 완전히 업데이트되지 않았지만 일부 페이지는 이미 업데이트되었습니다.버전 정보 섹션에 나열된 NET Framework 4.6.

전체적으로 언어 사양(C# 컴파일러 및 CLR 사양), 및 .NET Framework 릴리스는 서로 긴밀하게 연결되어 있지 않습니다.또한 개발자는 새로운 컴파일러를 활용하여 이전 CLR 및 를 대상으로 할 수 있는 충분한 유연성을 제공합니다.NET Framework.

예, 오래된 프레임워크에 대해 새로운 컴파일러를 사용할 수 있으며 새로운 컴파일러 기능에 액세스할 수 있습니다.NET 4.6).

이에 대한 다른 예로는 C# 4.0(.)과 함께 도입된 기본 매개 변수를 사용하는 방법이 있습니다.NET 4.0)에서 사용할 수 있습니다.NET 2.0(C# 2.0) 및 .NET 3.5(C# 3.0) 프로젝트.

에서 확장 메서드(C# 3.0에 소개됨)를 사용할 수도 있습니다.NET 2.0 또는 .컴파일러가 에 소개된 속성을 찾을 수 있도록 컴파일러를 만족시키기 위해 작은 해결책을 하나만 수행하면 NET 3.0.NET 3.5.

스크립트 작성을 사용하는 경우 새 작성기로 경로를 변경해야 합니다.

set CPATH=C:\Program Files (x86)\MSBuild \14.0\Bin

[재구축.방망이]

set CPATH=C:\Program Files (x86)\MSBuild\14.0\Bin
call nuget_restore.bat
"%CPATH%\msbuild" YourSolution.sln /t:Rebuild /p:Configuration=Release /fileLogger /flp:logfile=JustErrors.log;errorsonly /verbosity:minimal

if %errorlevel% neq 0 goto ERROR

REM call deploy Release  //Things like deploy files..
goto END

:ERROR
       echo ERROR: %errorlevel%
       pause

:END

@oobe의 답변은 실제로 중요합니다.C:MSBuild.exe를 사용한 후에야 배치 파일을 통해 솔루션을 구축할 수 있었습니다.\프로그램 파일(x86)\MSBuild\14.0\Bin.

언급URL : https://stackoverflow.com/questions/28921701/does-c-sharp-6-0-work-for-net-4-0

반응형