Сборка С# 6.0 завершается неудачей при создании TFS даже с установленным Microsoft.Net.Compilers

Моя компания имеет TFS 2013.
У меня есть проект с использованием функций С# 6.0.
Моя команда не имеет прямого доступа к серверу сборки. VS2015 пока не установлен, но люди, которые управляют сервером, хотят установить инструменты сборки 2015 года.

В то же время я установил пакет Microsoft.Net.Compilers NuGet, как указано в ответах на С# 6.0 TFS Builds и несколько других вопросов здесь.

Некоторые проекты в решении уже установлены: (проект Asp.Net MVC 5 и проект Web API.)

Когда решение построено, TFS использует компилятор Rosyln из пакета для некоторых проектов и компилятор по умолчанию для других.

  • Я удалил и снова добавил пакет.
  • Я пробовал переключиться между версиями 1.0.0, 1.1.0 и 1.3.2 пакета.
  • Я открыл файлы .csproj бок о бок, чтобы искать тонкие отличия.
  • Я создал несколько решений и несколько определений построения из тех же проектов, чтобы увидеть, вызвала ли какая-то комбинация проблема.
    • Один из проектов всегда строится с помощью компилятора по умолчанию, когда он является частью одной сборки и с компилятором Roslyn при сборке как часть другого.

Два веб-проекта никогда не используют компилятор Roslyn. Есть еще 3 библиотеки, одно консольное приложение и полнофункциональные проекты, содержащие тесты на единицу/интеграцию. За исключением одного проекта (одной из библиотек), который ведет себя по-разному, в зависимости от того, в какой структуре он находится, все проекты кажутся непротиворечивыми, в которых они используют

Что мне здесь не хватает? Почему TFS может использовать компилятор пакета для некоторых проектов, но не для других?

Отбор ошибок сборки: Использование nameof:

SomeController.cs (53): The name 'nameof' does not exist in the current context

статический, используя:

RedactedTests.cs (5): Identifier expected; 'static' is a keyword
RedactedTests.cs (5): Expected class, delegate, enum, interface, or struct

нулевой оператор коалесценции:

InterestingClassName.cs (40): Invalid expression term '.'
InterestingClassName.cs (40): Syntax error, ':' expected
InterestingClassName.cs (40): Invalid expression term '.'
InterestingClassName.cs (40): Syntax error, ':' expected

выражение bodied свойство:

MyClass.cs (11): ; expected
MyClass.cs (11): Method must have a return type
MyClass.cs (11): Type expected

Ответ 1

Возможно, использует версию .sln файла, помните об этом, если решение находится с целевой версией.

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1

Можете ли вы попытаться изменить это?