이미이 기능이 작동하고있을 수 있지만 향후 다른 사람에게 도움이 될 수 있습니다. 최근에이 질문을 접했고 올바른 방향으로 나아가고 궁극적으로 해결책을 찾았습니다.
이에 대한 또 다른 가능한 해결책은 프로젝트를 빌드 할 MSBuild 버전을 대상으로 프로젝트 파일을 수동으로 업데이트하는 것입니다.
최근에 TeamCity 빌드 서버 업데이트를 진행했으며 이미 여기에 Microsoft Build Tools 2015를 설치했습니다. 저는 빌드 서버에 모든 것을 갖추고 있다고 생각했고, C # 6.0을 대상으로하는 솔루션이 있었고 .net 4.6.1을 대상으로하는 모든 프로젝트가있었습니다. 여러분처럼 C # 6.0 전용 코드를 사용하는 모든 것이 제 로컬 환경에서 잘 빌드되었지만 제 TeamCity 빌드 서버는 그 어떤 것도 좋아하지 않았습니다.
다른 사람들이 언급했듯이 Microsoft.Net.Compilers NuGet 패키지를 사용해 보았습니다. 최신 버전은 빌드가 내 빌드 서버에서 작동하도록 허용했지만 로컬로 코드를 게시 할 수는 없었습니다 (내 요구 사항). 해당 NuGet 패키지의 이전 버전에서는 게시 할 수 있었지만 빌드가 작동하지 않았습니다.
내가해야 할 일은 궁극적으로 C # 6.0 코드를 처리 할 수있는 MSBuild 버전을 대상으로하는 솔루션의 각 프로젝트 파일을 수정하는 것입니다. 각 프로젝트 파일에서 다음 줄과 비슷한 줄을 찾았습니다.
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
해당 줄의 핵심 구성 요소는 ToolsVersion 부분입니다. 프로젝트 파일에서이 줄을 다음과 같이 변경했습니다.
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
여기서 차이점은 4가 아닌 버전 14를 대상으로한다는 것입니다. 버전 14.0은 Build Tools 2015에 해당합니다.이를 변경함으로써 TeamCity 빌드 서버가 올바른 MSBuild 버전을 사용하고 C # 6.0 코드를 빌드 할 수있었습니다.
또한 VS2015가 올바른 작업을 수행하지 않고 내 로컬 빌드를 엉망으로 만들었 기 때문에 4.6.1을 사용하도록 TargetFrameworkVersion xml 노드를 수동으로 업데이트해야했지만 여기서는 관련이 없습니다.
누군가 내가 틀렸다면 나를 고쳐주세요.하지만 참고로 버전 번호는 다음과 같습니다.
4.0 = VS2012
12.0 = VS2013
14.0 = VS2015
15.0 = VS2017
.net 4.7을 사용하려면 Build Tools 2017을 설치하고 14.0이 아닌 15.0을 대상으로하는 프로젝트가 있어야한다고 생각하지만 확인하지 않았습니다.