我们可以使用Kudu将C#7 Web应用程序部署到Azure吗?

时间:2017-03-28 14:05:59

标签: c# azure azure-web-sites visual-studio-2017 c#-7.0

自Visual Studio 2017发布以来,我们可以使用新的C#7功能,我希望在部署Azure Web应用程序时可以使用这些功能。

不幸的是,我们在使用持续部署(kudu git deploy)时会看到编译错误,所以Azure似乎还不支持新的工具链。

我们现在有什么办法可以让它现在起作用(除了直接发布程序集)吗?

3 个答案:

答案 0 :(得分:21)

因为我们还没有Azure中的msbuild15。 如果您想在持续集成中使用c#7功能,则可能需要一些解决方法

  1. 对于 dotnet核心网络解决方案,您可以在Azure 开箱即用中构建它。 (它使用自己的dotnet msbuild.dll)[repository sample]
  2. 对于 asp.net网络解决方案,您需要将Microsoft.Net.Compilers 2.0+ nuget包添加到应用了新语言功能的项目。例如,如果解决方案中的类库使用新语法,则需要将nuget包添加到该lib项目。 (如果引用此nuget包,则会导入新的c#编译器)[repository sample]
  3. 最后针对混合解决方案(dotnet核心Web应用程序+ .NET框架类库),您需要为.NET框架库项目独立运行nuget restore 由于dotnet restore不向后兼容,因此无法从旧的构建系统中恢复项目。我是通过黑客攻击deploy.cmd [repository sample]
  4. 来做到这一点的

    这些解决方法要么尝试着 模仿msbuild15(case1:dotnet msbuild.dll,case2:编译器作为nuget包)
    或模仿nuget4.0(案例3:同时运行dotnet restorenuget3.5 restore

    我们正在为Azure构建这些工具,它们应该很快就会推出。您可以在github

    上保持最新状态

答案 1 :(得分:3)

添加Microsoft.Net.Compilers NuGet包解决了这个问题。

答案 2 :(得分:0)

@joshuanapoli在comment中对已接受答案的指出。方案2仅适用于Microsoft.Net.Compilers v2.4.0及更低版本。

花了我几个小时来注意到并弄清楚它。