Visual Studio 2017 使用 C# 7.2 发布 ASP.NET Core 应用程序
Posted
技术标签:
【中文标题】Visual Studio 2017 使用 C# 7.2 发布 ASP.NET Core 应用程序【英文标题】:Visual Studio 2017 publish ASP.NET Core app with C# 7.2 【发布时间】:2018-06-09 23:33:36 【问题描述】:我有一个使用 public static async Task Main()
的 Asp.Net MVC Core 网站。为此,我已将调试和发布构建配置的语言版本设置为 C# 7.2(在属性 -> 构建 -> 高级对话框中,在 csproj 中仔细检查)。
应用程序在调试和发布模式下都可以正常构建和启动。
现在,我正在尝试直接从 Visual Studio 2017 15.5.2(使用 WebDeploy)将它发布到 Azure 网站,我得到了这个:
Program.cs(17,29):错误 CS8107:功能“异步主”不可用 在 C# 7.0 中。请使用语言版本 7.1 或更高版本。 CSC(0,0):错误 CS5001:程序不包含适用于 入口点
在输出窗口中,我看到它正在运行带有一些标志的 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\csc.exe
,可能其中一个是错误的?
有人知道这是一个已知问题还是我做错了什么?
【问题讨论】:
【参考方案1】:这似乎是 Visual Studio 中的一个错误。 将此行添加到 .csproj 文件中的主属性组解决了我的问题:
<LangVersion>latest</LangVersion>
在 ASP.NET 主页存储库中也报告了此问题 here。
【讨论】:
【参考方案2】:本身不是一个答案,但值得async Main
只是语法糖。在幕后 Roslyn 只是添加了标准的 void Main
包装器构造:
static void Main(object[] args)
MainAsync(args).GetAwaiter().GetResult();
static async Task MainAsync(object[] args)
// your code
您可能不值得花时间尝试让服务器在同一页面上 C# 版本明智,只是为了节省字面上的三行代码。
【讨论】:
是的,我在此期间又回到了这个问题,因为我找不到问题的根源以上是关于Visual Studio 2017 使用 C# 7.2 发布 ASP.NET Core 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
visual studio2017使用c#删除SQL数据库里的一行
Visual Studio 2017:C# 突出显示并用括号括起来
无法从使用 Visual Studio 2017 和 C# 7.0 的方法返回元组
如何在 Visual Studio 2017 项目中启用 C# 7 的所有功能?