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

时间:2017-12-29 14:26:43

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

我有一个使用<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mkyong.common</groupId> <artifactId>HibernateExample</artifactId> <packaging>jar</packaging> <version>1.0</version> <name>HibernateExample</name> <url>http://maven.apache.org</url> <repositories> <repository> <id>JBoss repository</id> <url>http://repository.jboss.org/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4-1203-jdbc4</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.3.Final</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.1.GA</version> </dependency> </dependencies> </project> 的Asp.Net MVC核心网站。为了实现这一点,我将语言版本设置为C#7.2(在属性 - &gt; build - &gt;高级对话框中,在csproj中进行了双重检查)以进行调试和发布构建配置。

App在Debug和Release模式下构建并启动。

现在,我正在尝试直接从Visual Studio 2017 15.5.2(使用WebDeploy)将其发布到Azure网站,我得到了这个:

  

Program.cs(17,29):错误CS8107:功能'async main'不可用   在C#7.0中。请使用语言版本7.1或更高版本。 CSC(0,0):错误   CS5001:程序不包含适合的静态“主”方法   一个切入点

在输出窗口中,我看到它正在运行带有一些标志的public static async Task Main(),可能其中一个是错的?

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

2 个答案:

答案 0 :(得分:2)

本身不是答案,但是它的价值async Main只是语法糖。在幕后,Roslyn只添加了标准的void Main包装结构:

static void Main(object[] args)
{
    MainAsync(args).GetAwaiter().GetResult();
}

static async Task MainAsync(object[] args)
{
    // your code
}

可能不值得花时间尝试将服务器放在C#版本的同一页面上,只是为了节省三行代码。

答案 1 :(得分:2)

这似乎是Visual Studio中的一个错误。 将此行添加到.csproj文件中的主属性组解决了我的问题:

<LangVersion>latest</LangVersion>

ASP.NET Home存储库中也报告了此问题here