Подтвердить что ты не робот

Можем ли мы развернуть веб-приложение С# 7 для Azure с помощью Kudu?

С момента выпуска Visual Studio 2017 мы можем использовать новые функции С# 7, которые, как я ожидал, будут работать при развертывании в Azure Web-приложениях.

К сожалению, мы видим ошибки компиляции при использовании непрерывного развертывания (kudu git deploy), поэтому кажется, что Azure еще не поддерживает новую инструментальную цепочку.

Есть ли что-нибудь, что мы можем сделать, чтобы заставить это работать сейчас (помимо публикации сборников напрямую)?

4b9b3361

Ответ 1

так как у нас еще нет msbuild15 в Azure. если вы хотите использовать функции С# 7 с непрерывной интеграцией, вам может потребоваться некоторое обходное решение

  • для веб-решения dotnet core, вы можете создать его в Azure из коробки. (он использует собственный dotnet msbuild.dll) [образец хранилища]
  • для веб-решения asp.net, вам нужно добавить пакет Microsoft.Net.Compilers 2.0+ nuget в проект , где применяется новая языковая функция. Например, если библиотека классов в решении использует новый синтаксис, вам нужно добавить пакет nuget в этот проект lib. (поэтому новый С# -компилятор импортируется, если вы ссылаетесь на этот пакет nuget) [образец репозитория]
  • наконец, для смешанного решения (веб-приложение для сети dotnet +.NET framework class lib), вам нужно запустить nuget restore для проекта .NET framework lib независимо, поскольку dotnet restore не поддерживает обратную совместимость, он не может повторить проект из старой системы сборки. Я сделал это, взломав deploy.cmd [образец хранилища]

Эти обходные пути либо пытаются использовать имитировать msbuild15 (case1: dotnet msbuild.dll, case2: компилятор как пакет nuget)
или имитировать nuget4.0 (случай 3: запустить как dotnet restore, так и nuget3.5 restore)

мы находимся в процессе создания этих инструментов для Azure, они должны скоро выйти. вы можете оставаться в курсе github

Ответ 2

Добавление пакета Microsoft.Net.Compilers NuGet устраняет проблему.

Ответ 3

Как отметил @joshuanapoli в комментарии к принятому ответу, сценарий № 2 работает только с Microsoft.Net.Compilers v2.4.0 и ниже.

Мне потребовалось пару часов, чтобы заметить и понять это.