Visual Studio 2017 publica o aplicativo ASP.NET Core com o C # 7.2

10

Eu tenho um site do Asp.Net MVC Core que usa public static async Task Main() . Para que isso funcione, eu configurei a versão do idioma para C # 7.2 (nas propriedades - > build - > advanced dialog, duplamente marcada no csproj) para as configurações de compilação Debug e Release.

O aplicativo é desenvolvido e iniciado bem no modo Debug e Release.

Agora, estou tentando publicá-lo em um site do Azure diretamente do Visual Studio 2017 15.5.2 (com o WebDeploy) e recebo o seguinte:

  

Program.cs (17,29): Erro CS8107: o recurso 'principal assíncrono' não está disponível   em c # 7.0. Por favor, use o idioma versão 7.1 ou superior. CSC (0,0): erro   CS5001: O programa não contém um método 'Principal' estático adequado para   um ponto de entrada

Na janela de saída, vejo que está executando C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.0\Bin\Roslyn\csc.exe com alguns sinalizadores, provavelmente um deles está errado?

Alguém sabe se isso é um problema conhecido ou se estou fazendo algo errado?

    
por adrian h. 29.12.2017 в 15:26
fonte

2 respostas

2

Não é uma resposta em si, mas pelo que vale async Main é apenas açúcar sintático. Nos bastidores Roslyn acaba de adicionar a construção padrão do void Main wrapper:

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

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

Provavelmente não vale a pena tentar colocar o servidor na mesma página em versão C #, apenas para salvar literalmente três linhas de código.

    
por Chris Pratt 29.12.2017 / 21:04
fonte
2

Isso parece ser um bug no Visual Studio. Adicionar essa linha ao grupo de propriedades principal no arquivo .csproj resolveu o problema para mim:

<LangVersion>latest</LangVersion>

O problema também foi relatado aqui no repositório inicial do ASP.NET.

    
por user1336 10.01.2018 / 10:41
fonte