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 的所有功能?

如何在 Visual Studio 2015 中使用 C# 7?

Visual Studio 2017 使用 C# 7.2 发布 ASP.NET Core 应用程序