Использование C# 7.1 с MSBuild
использовать новый C# 7.1 особенности языка С помощью Visual Studio 2017 вы добавляете параметр <LangVersion>latest</LangVersion>
в файл(ы) проекта.
однако, построение таких проектов из MSBuild (версия 15.3.409.57025, расположенная по адресу C:Program Files (x86)Microsoft Visual Studio17EnterpriseMSBuild.0Bin
) приводит к ошибке:
CSC : error CS1617: Invalid option 'latest' for /langversion;
must be ISO-1, ISO-2, Default or an integer in range 1 to 6.
эта функция просто еще не поддерживается MSBuild, или это возможно, чтобы получить эту работу?
это охватывает 200 + проектов, которые были первоначально созданы по-разному в Visual Studio 2013 и в 2015 году. Все они были перенаправлены на .NET 4.7 с помощью Целевой Framework Migrator инструмент (который сохранил много щелчка и появляется-на основе проверки .изменения файла csproj-для корректного выполнения задания).
все проекты успешно строятся из Visual Studio 2017.
4 ответов
пакеты Nuget
-
Microsoft.Net.Compilers
пакет nuget не работает и не нужно для установки.
установить следующие project/build settings
как минимум
C# 7.1
или вышеDebug
иRelease
свойства сборки. (через: меню проекта > [Имяпроекта] свойства > вкладка сборка > кнопка [Дополнительно] > Языковая версия).установка его на последнюю версию не работа.
также убедитесь, что вы используете последнюю версию MSBuild.
добавить ссылку на Microsoft.Сеть.Компиляторы пакет (версия 2.3.x, чтобы получить C# 7.1).
короткое описание пакета:
Microsoft.Сеть.Компиляторы
этот пакет включает не только C# и Компиляторы Visual Basic также изменяют целевые объекты MSBuild, чтобы включенные версии компилятора используются, а не любая установленная система версии. После установки этот пакет требует Средства Сборки Microsoft 2015.
мы обнаружили, что наши проекты MVC запускают эту проблему.
чтобы исправить, мы обновили Microsoft.CodeDom.Providers.DotNetCompilerPlatform
пакет NuGet, используемый этими проектами из версии 1.0.0 to 1.0.7.
у меня есть решение с C# консольное приложение на C# 7.1 здесь.
используя командную строку VS 2017 (и, следовательно, MSBuild 15.3.409.57025), он работал нормально. (The .csproj
содержит <LangVersion>latest</LangVersion>
.)
эта функция просто еще не поддерживается MSBuild, или это возможно, чтобы получить эту работу?