나는 C #6.0을 사용하여 샘플 프로젝트를 만들었습니다 - 널 전파 및 속성 초기화를 예제로 설정하고 대상 버전 인 .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);
}
}
.NET 4.0을 대상으로하는 소프트웨어에 C #6.0 기능을 사용할 수 있습니까? 제한이나 단점이 있습니까?
예 (대부분). C #6.0에는 새로운 Roslyn 컴파일러가 필요하지만 새 컴파일러는 구형 프레임 워크 버전을 대상으로 컴파일 할 수 있습니다. 이는 새로운 기능으로 제한됩니다.프레임 워크의 지원을 필요로하지 않는다..
예를 들어 이전 버전의 .Net에서는 C #6.0의 문자열 보간 기능을 사용할 수 있지만 (string.Format
) :
int i = 3;
string s = $"{i}";
.Net 4.6과 함께 사용해야합니다.IFormattable
새로운 프레임 워크 버전 만 추가됨System.FormattableString
:
int i = 3;
IFormattable s = $"{i}";
언급 한 사례에는 프레임 워크의 유형이 필요하지 않습니다. 따라서 컴파일러는 이전 프레임 워크 버전에서 이러한 기능을 완벽하게 지원할 수 있습니다.
IFormattable
문자열 보간법. - i3arnon
Wikipedia와 다른 링크를 이해하는 방법에 집중하고 싶습니다.
Wikipedia에서 C #6.0이 .NET Framework 4.6과 함께 있다고 가정하면 컴파일러 (msc.exe)의 프로덕션 버전이 .NET Framework 4.6 릴리스의 일부가된다는 의미입니다. 통하다다중 타겟팅, 이러한 컴파일러는 .NET Framework 릴리스의 더 낮은 버전을 지원할 수 있습니다. 물론 Roslyn은 오픈 소스 프로젝트가 되었기 때문에 컴파일러는 이제 완전히 개별적인 구성 요소입니다.
CLR 버전 4.0.30319 (.0)를 참조 할 때 실제로는 .NET Framework 4 * (4.0, 4.0. *, 4.5, 4.5. *, 4.6, 4.6. *)가 될 수 있습니다. CLR 버전 4 사양. 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) 프로젝트에서 사용할 수 있습니다.
또한 .NET 2.0 또는 .NET 3.0에서 확장 메서드 (C #3.0에서 도입)를 사용할 수 있습니다.하나의 작은 해결 방법을 수행하는 경우컴파일러를 행복하게 만들어서 .NET 3.5에서 소개 된 속성을 찾을 수 있습니다.
건물 스크립트를 사용하는 경우 경로를 새 작성자로 변경하는 것을 잊지 마십시오.
CPATH = C : \ Program Files (x86) \ MSBuild \ 14.0 \ Bin을 설정하십시오.
[Rebuild.bat]
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에 의한 응답은 실제로 importatnt입니다. 나는 배치 파일을 통해서만 솔루션을 만들 수 있었다.MSBuild.exe...에서C : \ Program Files (x86) \ MSBuild \ 14.0 \ Bin.