У меня есть простое тестовое консольное приложение. Единственный код, который у него есть, это
public class Class1
{
private protected int _value = 0b_1001_0110;
}
который просто проверяет, будут ли эти функции С# 7.2 создаваться или нет.
В Visual Studio 2017 15.5.2 они нормально строятся, если я устанавливаю языковую версию следующим образом.
Если я сейчас проверю проект в VSTS и запущу сборку, он выйдет из строя с различными ошибками, например.
Test\CSharp72Test\CSharp72Test\Class1.cs(7,17): ошибка CS0107: несколько модификаторов защиты
Test\CSharp72Test\CSharp72Test\Class1.cs(7,40): ошибка CS1013: неверный номер
потому что он ничего не знает о C#7.
Если я сейчас добавлю пакет NuGet «Microsoft.NET.Compilers 2.6.1» и пересоберу его, он отлично работает локально, но не работает в VSTS с
Test\CSharp72Test\CSharp72Test\Class1.cs(7,40): ошибка CS8107: функция "разделитель первых цифр" недоступна в C# 7.0. Пожалуйста, используйте языковую версию 7.2 или выше.
Теперь он использует правильную версию CSC.exe, но не передает /langversion:latest.
Как правильно передать это значение для каждого проекта в многопроектном решении?