【问题标题】:Visual Studio 2017 publish ASP.NET Core app with C# 7.2Visual Studio 2017 使用 C# 7.2 发布 ASP.NET Core 应用程序
【发布时间】: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,可能其中一个是错误的?

有人知道这是一个已知问题还是我做错了什么?

【问题讨论】:

    标签: c# azure asp.net-core visual-studio-2017


    【解决方案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# 版本明智,只是为了节省字面上的三行代码。

      【讨论】:

      • 是的,我在此期间又回到了这个问题,因为我找不到问题的根源
      猜你喜欢
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多