คุณอาจทำงานนี้อยู่แล้ว แต่อาจช่วยคนอื่นได้ในอนาคต เมื่อไม่นานมานี้ฉันเจอคำถามนี้และทำให้ฉันก้าวไปในทิศทางที่ถูกต้องและนำไปสู่แนวทางแก้ไขในที่สุด
อีกวิธีหนึ่งที่เป็นไปได้คือการอัปเดตไฟล์โครงการของคุณด้วยตนเองเพื่อกำหนดเป้าหมายเวอร์ชัน MSBuild ที่คุณต้องการให้สร้างโครงการด้วย
ฉันเพิ่งผ่านการอัปเดตเซิร์ฟเวอร์ TeamCity build และฉันได้ติดตั้ง Microsoft Build Tools 2015 ไว้แล้ว ฉันคิดว่าฉันมีทุกอย่างในบิลด์เซิร์ฟเวอร์ฉันมีโซลูชันที่กำหนดเป้าหมาย C # 6.0 และฉันมีทุกโปรเจ็กต์ที่กำหนดเป้าหมาย. net 4.6.1 เช่นเดียวกับคุณทุกอย่างที่มีโค้ดเฉพาะ C # 6.0 สร้างขึ้นได้ดีในสภาพแวดล้อมท้องถิ่นของฉัน แต่เซิร์ฟเวอร์สร้าง TeamCity ของฉันไม่ชอบสิ่งใดเลย
ดังที่ผู้อื่นกล่าวไว้ฉันได้ลองใช้แพ็คเกจ Microsoft.Net.Compilers NuGet เวอร์ชันล่าสุดอนุญาตให้บิวด์ทำงานบนเซิร์ฟเวอร์บิลด์ของฉันได้ แต่จะไม่อนุญาตให้ฉันเผยแพร่โค้ดในเครื่อง (ข้อกำหนดของฉัน) เวอร์ชันก่อนหน้านี้ของแพ็คเกจ NuGet นั้นจะให้ฉันเผยแพร่ แต่บิลด์ใช้ไม่ได้
สิ่งที่ฉันพบว่าต้องทำในท้ายที่สุดคือแก้ไขไฟล์โครงการแต่ละไฟล์ในโซลูชันของฉันเพื่อกำหนดเป้าหมายเฉพาะรุ่น MSBuild ที่สามารถจัดการรหัส C # 6.0 ได้ ในแต่ละไฟล์โครงการของฉันฉันพบบรรทัดที่คล้ายกับบรรทัดต่อไปนี้:
<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">
ความแตกต่างตรงนี้คือฉันกำหนดเป้าหมายเวอร์ชัน 14 ไม่ใช่ 4 เวอร์ชัน 14.0 สอดคล้องกับ Build Tools 2015 จากการเปลี่ยนแปลงนี้เซิร์ฟเวอร์การสร้าง TeamCity ของฉันใช้เวอร์ชัน MSBuild ที่ถูกต้องและสามารถสร้างรหัส C # 6.0 ของฉันได้
ฉันต้องอัปเดตโหนด xml TargetFrameworkVersion ด้วยตนเองเพื่อใช้ 4.6.1 เนื่องจาก VS2015 ไม่ได้ทำสิ่งที่ถูกต้องและทำให้งานสร้างในเครื่องของฉันยุ่ง แต่นั่นไม่เกี่ยวข้องที่นี่
ได้โปรดมีคนแก้ไขฉันถ้าฉันผิด แต่เพื่อการอ้างอิงฉันคิดว่าหมายเลขเวอร์ชันจะเป็นดังนี้:
4.0 = VS2012
12.0 = VS2013
14.0 = VS2015
15.0 = VS2017
ฉันเชื่อว่าหากคุณต้องการใช้. net 4.7 คุณจะต้องติดตั้ง Build Tools 2017 และมีโครงการของคุณที่กำหนดเป้าหมายเป็น 15.0 แทนที่จะเป็น 14.0 แต่ฉันยังไม่ได้ยืนยันสิ่งนี้