이 질문에는 이미 답변이 있습니다.
이전 버전의 .NET Framework (.NET 4.5.2)를 대상으로하는 프로젝트가 있습니다. 나는 비주얼 스튜디오 2015를 설치했다. (그리고 내 컴퓨터에 .NET 4.6을 설치했다.) .NET 4.6 / C #6에서 릴리스 된 C #언어 기능을 사용하면 여전히 컴파일됩니다. 내 프로젝트의 타겟 프레임 워크가 < .NET 4.6이 컴파일되지 않아야합니다 :
public string MyExpressionBodyProperty => "1";
//auto properties are new in C#6
public string MyAutoProperty { get; } = "1";
private static void MethodThatUsesNameOf(string filename)
{
if (filename == null)
{
//nameof was released in C#6
throw new ArgumentException("The file does not exist.", nameof(filename));
}
}
내가 타겟팅하는 프레임 워크 버전에서 작동하는 .NET 언어 기능 만 사용하고 있는지 확인하려면 어떻게합니까?
.NET Framework 버전과 C #언어 버전은 서로 다릅니다. C #6 언어 기능
public string MyAutoProperty { get; } = "1";
nameof(filename)
VS 2015에 의해 이전 프레임 워크를 대상으로하는 코드로 컴파일 될 수 있습니다.
내가 타겟팅하는 프레임 워크 버전에서 작동하는 .NET 언어 기능 만 사용하고 있는지 확인하려면 어떻게합니까?
.NET Framework 기능을 사용하려고하면 이전 프레임 워크를 대상으로하는 경우 적절한 컴파일러 오류가 발생합니다.
.NET 4.6이없는 머신에이 코드를 배포 할 수 있습니까?
예, 그렇습니다. 배포 컴퓨터가 VS2015에서 대상으로하는 프레임 워크와 호환되는 프레임 워크를 가지고있는 한.
C #6 기능과 .NET 4.6 기능이 있습니다.
nameof
C #6 기능이므로 최신 컴파일러에서만 실행해야하지만 이전 .NET Framework를 계속 사용할 수 있습니다.
.NET 4.6이 필요한 기능의 예는 다음과 같습니다.
public void Foo(IReadOnlyCollection<string> input)
{
}
public void Main(string[] args)
{
Foo(new Stack<string>());
}
.NET 4.6에서Stack
도구IReadOnlyCollection
이전 버전에서는 그렇지 않습니다. 위의 코드는 대상 플랫폼으로 .NET 4.5.2를 선택한 경우 컴파일되지 않습니다.
async/await
없이IAsyncStateMachine
예를 들면. - Jon Hanna