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.6입니다.
- 이 질문(및 Visual Studio 2015 CTP 테스트)에서는 CLR 버전이 4.0.30319.0이라고 합니다.
- 이 MSDN 페이지에는 이렇게 나와 있습니다.NET 4, 4.5, 4.5.2는 CLR 4를 사용합니다. 에 대한 정보가 없습니다.NET 4.6.
대상 소프트웨어에 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
'programing' 카테고리의 다른 글
대/소문자를 구분하지 않는 목록 정렬, 낮은 대/소문자 구분 없이? (0) | 2023.05.07 |
---|---|
데이터베이스가 생성된 이후 컨텍스트를 지원하는 모델이 변경되었습니다. (0) | 2023.05.07 |
피쳐 분기를 다른 피쳐 분기로 기본 재배치 (0) | 2023.05.07 |
Postgresql - DB에 대한 일부 자동 연결 때문에 데이터베이스를 삭제할 수 없습니다. (0) | 2023.05.07 |
Ubuntu에서 Tkinter 모듈을 찾을 수 없습니다. (0) | 2023.05.07 |