Неверный параметр '7' для / langversion;должно быть ISO-1, ISO-2, по умолчанию или целое число в диапазоне от 1 до 6 - PullRequest
0 голосов
/ 17 октября 2018

У меня есть проект в Visual Studio, который не будет компилироваться.Выдает множество ошибок, подобных этим:

ошибка CS1001: ожидается идентификатор
;ожидается
ошибка CS1022: определение типа или пространства имен или ожидаемый конец файла
ошибка CS0116: пространство имен не может напрямую содержать элементы, такие как поля или методы

Жалуется на современныеC # конструкции, такие как Tuples.Всякий раз, когда я перехожу к этим файлам, Visual Studio не помечает никаких ошибок или помечает их за секунду до того, как они исчезнут.

Если перейти к свойствам проекта (в Build -> Advanced ...)языковая версия установлена ​​на «C # последняя основная версия (по умолчанию)».Если я установлю его на 7.0 или выше, чтобы попытаться получить поддержку этих конструкций, при компиляции проекта он выдаст следующую ошибку:

Недопустимая опция '7' для / langversion;должно быть ISO-1, ISO-2, По умолчанию или целое число в диапазоне от 1 до 6.

Так что, похоже, он не принимает версию C # выше 6.

Стоит отметить, что этот проект используется в репозитории, и ни у кого из других членов команды не возникло проблем с его компиляцией.Поэтому все это указывает на проблему с локальной настройкой моей машины или Visual Studio, а не на конфигурацию проекта.

Некоторые моменты, которые следует учитывать:

  • Пакет«System.ValueTuple» правильно указана в проекте и установлена ​​на версию 4.3.1.
  • Пакет «Microsoft.Net.Compilers» имеет версию 2.2.0.
  • Целевая структурадля проекта установлено .NET Framework 4.6.2.
  • Моя Visual Studio имеет самую последнюю версию, 15.8.7.

Это некоторые из вещей, которые япробовал:

  • Обновление пакетов "System.ValueTuple" и "Microsoft.Net.Compilers" до их последних версий.
  • Я собрал, перестроил и очистил проект.
  • Я попытался обновить все другие проекты в моем решении до той же версии Microsoft.Net.Compilers.
  • Я восстановил установку Visual Studio.

И все же ничего не работает.

Любая помощьоценили!

1 Ответ

0 голосов
/ 18 октября 2018
  1. Пусть ваш коллега создаст тривиальный проект, который он может скомпилировать (игрушечный проект, использующий набор значений).Запишите точно, как они это сделали.Убедитесь, что этот проект работает для них, но не для вас.
  2. Полностью удалите Visual Studio (нет, восстановление не приведет к его сокращению).
  3. Установите Visual Studio.Проверьте наличие обновлений в Visual Studio и Windows.Примените их все.
  4. Перезагрузите компьютер.
  5. Попробуйте запустить проект.Если это удастся, вы добились прогресса (или сделали).Если это не удастся, у вас по крайней мере будет минимальное воспроизведение.
  6. Создайте совершенно новый проект, выполнив те же шаги, которые ваш коллега выполнил на шаге 1. (Этот шаг является ключевым. Акт создания нового проекта часто исправляет эточто-то вроде проблемы, или дает вам новый рабочий проект, который можно преобразовать в сломанный).
  7. Возиться (установить инструменты консоли nuget, вручную добавить / удалить случайные пакеты и, как правило, покопаться).

Если все эти шаги не пройдены, сдавайтесь.К тому времени, как вы прочитаете мой ответ, вы уже потратите целый день на решение этих проблем.Кто-то может решить вашу проблему, но вы не можете знать, займет ли это еще один день или еще 30 дней.Правда, выровнять / восстановить стоит 1-2 (*) полных рабочих дня, но это в значительной степени гарантированно работает (при условии, что ваш процесс адаптации является надежным / последовательным).Потраченные впустую 1-2 дня приемлемы, если альтернатива тратит впустую неделю и все еще не обязательно успешна.

(*) Здесь, я предполагаю, что ваш процесс регистрации эффективен.Если это беспорядок, документируйте процесс, чтобы вы могли это исправить.

...