我们可以使用 Kudu 将 C# 7 Web 应用程序部署到 Azure 吗?
Can we deploy a C# 7 web app to Azure using Kudu?
由于 Visual Studio 2017 已发布,我们可以使用新的 C# 7 功能,我预计这将在 Azure Web 应用程序上部署时起作用。
不幸的是,我们在使用持续部署(kudu git 部署)时看到编译错误,因此 Azure 似乎还不支持新的工具链。
我们现在可以做些什么来让它工作(除了直接发布程序集之外)?
添加 Microsoft.Net.Compilers
NuGet 包解决了这个问题。
因为我们在 Azure 中还没有 msbuild15。
如果您想通过持续集成使用 c#7 功能,您可能需要一些解决方法
- 对于 dotnet 核心 Web 解决方案,您可以在 Azure 开箱即用 中构建它。 (它使用自己的
dotnet msbuild.dll
)[repository sample]
- 对于asp.net web 解决方案,您需要将
Microsoft.Net.Compilers
2.0+ nuget 包添加到新语言功能所在的项目中已应用。例如,如果解决方案中的 class 库使用新语法,则需要将 nuget 包添加到该 lib 项目。 (如果您引用此 nuget 包,则新的 c# 编译器将被导入)[repository sample]
- 最后 混合解决方案(dotnet 核心网络应用 + .NET 框架 class lib),你需要 运行
nuget restore
.NET framework lib 项目 independently 由于 dotnet restore
不向后兼容,因此无法从旧构建系统恢复项目。我通过破解我的 deploy.cmd
[repository sample] 来做到这一点
这些解决方法要么尝试
模仿msbuild15 (case1: dotnet msbuild.dll
, case2: compiler as a nuget package)
或者模仿nuget4.0(案例3:运行同时dotnet restore
和nuget3.5 restore
)
我们正在为 Azure 构建这些工具,它们应该很快就会推出。你可以在 github
上保持更新
正如@joshuanapoli 在 中对已接受答案所指出的那样 场景 #2 仅适用于 Microsoft.Net.Compilers v2.4.0 及以下版本。
我花了几个小时才注意到并弄明白。
由于 Visual Studio 2017 已发布,我们可以使用新的 C# 7 功能,我预计这将在 Azure Web 应用程序上部署时起作用。
不幸的是,我们在使用持续部署(kudu git 部署)时看到编译错误,因此 Azure 似乎还不支持新的工具链。
我们现在可以做些什么来让它工作(除了直接发布程序集之外)?
添加 Microsoft.Net.Compilers
NuGet 包解决了这个问题。
因为我们在 Azure 中还没有 msbuild15。 如果您想通过持续集成使用 c#7 功能,您可能需要一些解决方法
- 对于 dotnet 核心 Web 解决方案,您可以在 Azure 开箱即用 中构建它。 (它使用自己的
dotnet msbuild.dll
)[repository sample] - 对于asp.net web 解决方案,您需要将
Microsoft.Net.Compilers
2.0+ nuget 包添加到新语言功能所在的项目中已应用。例如,如果解决方案中的 class 库使用新语法,则需要将 nuget 包添加到该 lib 项目。 (如果您引用此 nuget 包,则新的 c# 编译器将被导入)[repository sample] - 最后 混合解决方案(dotnet 核心网络应用 + .NET 框架 class lib),你需要 运行
nuget restore
.NET framework lib 项目 independently 由于dotnet restore
不向后兼容,因此无法从旧构建系统恢复项目。我通过破解我的deploy.cmd
[repository sample] 来做到这一点
这些解决方法要么尝试
模仿msbuild15 (case1: dotnet msbuild.dll
, case2: compiler as a nuget package)
或者模仿nuget4.0(案例3:运行同时dotnet restore
和nuget3.5 restore
)
我们正在为 Azure 构建这些工具,它们应该很快就会推出。你可以在 github
上保持更新正如@joshuanapoli 在
我花了几个小时才注意到并弄明白。