Muhtemelen bunu zaten çalıştırıyorsunuz, ancak bu gelecekte başka birine yardımcı olabilir. Son zamanlarda bu soruyla karşılaştım ve beni doğru yönde hareket ettirdi ve sonunda bir çözüme götürdü.
Bunun bir başka olası çözümü, projelerinizin oluşturulmasını istediğiniz MSBuild sürümünü hedeflemek için proje dosyalarınızı manuel olarak güncellemektir.
Yakın zamanda bir TeamCity derleme sunucusu güncellemesinden geçtim ve üzerine Microsoft Derleme Araçları 2015'i zaten yükledim. Yapı sunucusunda her şeyin yerinde olduğunu sanıyordum, çözümüm C # 6.0'ı hedefliyordu ve her projem .net 4.6.1'i hedefliyordu. Sizin gibi, C # 6.0'a özgü kod içeren her şey yerel ortamımda gayet iyi inşa edildi, ancak TeamCity oluşturma sunucum hiçbirini beğenmedi.
Başkalarının da bahsettiği gibi, Microsoft.Net.Compilers NuGet paketini kullanmayı denedim. En son sürümü, yapının derleme sunucumda çalışmasına izin verdi, ancak kodumu yerel olarak yayınlamama izin vermedi (benim bir gereksinimim). Bu NuGet paketinin önceki sürümleri yayımlamama izin verirdi, ancak derleme çalışmazdı.
Yapmam gereken şey, nihayetinde çözümümdeki her proje dosyasını, özellikle C # 6.0 kodunu işleyebilecek MSBuild sürümünü hedefleyecek şekilde değiştirmekti. Proje dosyalarımın her birinde aşağıdaki satıra benzer bir satır buldum:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
bu satırın temel bileşeni, bunun ToolsVersion kısmıdır. Aşağıdakileri okumak için proje dosyalarımdaki bu satırı değiştirdim:
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Buradaki fark, 4 değil, sürüm 14'ü hedeflememdi. Sürüm 14.0, Build Tools 2015'e karşılık geliyor. Bunu değiştirerek, TeamCity derleme sunucum doğru MSBuild sürümünü kullandı ve C # 6.0 kodumu oluşturabildi.
Ayrıca, bunun TargetFrameworkVersion xml düğümünü 4.6.1 kullanmak için manuel olarak güncellemem gerekiyordu çünkü VS2015 bir şeyi doğru yapmıyordu ve yerel yapımı bozdu, ancak bu burada geçerli değil.
Lütfen, yanılıyorsam biri beni düzeltir, ama sadece referans için, sürüm numaralarının şuna benzer olduğunu düşünüyorum:
4.0 = VS2012
12.0 = VS2013
14.0 = VS2015
15.0 = VS2017
.Net 4.7'yi kullanmak istiyorsanız, Build Tools 2017'yi yüklemeniz ve projelerinizin 14.0 yerine 15.0'ı hedeflemesini sağlamanız gerektiğine inanıyorum, ancak bunu doğrulamadım.