Como habilitar o recurso C # 6.0 no Visual Studio 2013?

201

Eu estava analisando os recursos mais recentes introduzidos no C # 6.0 e apenas segui um exemplo de inicializador automático de propriedades,

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}

mas meu IDE não reconheceu a sintaxe.

Gostaria de saber como eu poderia habilitar o C # 6.0 no Visual Studio 2013. A estrutura de destino que estou usando é 4.5.1.

Hassaan
fonte
7
Não acredito que seja possível em 2013. Em vez disso, consulte o VS 14 CTP ou a visualização do VS 2015.
Jeroen Vannevel
Bem, você precisaria do compilador mais recente, que não faz parte do VS 2013, então não acho que isso seja possível.
Rufus L
2
Bem, eu estou olhando apenas para descobrir se ms libera qualquer atualização ou não
Hassaan
1
@PauloMorgado O que significa 'that' em "essa versão está desatualizada"? 4.5.1, VS2013 ou VS2014CTP?
ProfK
2
Você pode por favor actualizar a resposta sobre esta questão para @Deef
Chris Marisic

Respostas:

64

Informações para software de pré-lançamento obsoleto:

De acordo com isso , é apenas uma instalação e escolha o Visual Studio 2013:

De fato, a instalação do compilador C # 6.0 a partir desta versão envolve pouco mais do que instalar uma extensão do Visual Studio 2013, que por sua vez atualiza os arquivos de destino do MSBuild.

Portanto, basta obter os arquivos em https://github.com/dotnet/roslyn e você está pronto para começar.

Você precisa saber que é uma versão desatualizada das especificações implementadas lá, pois elas não atualizam mais o pacote do Visual Studio 2013 :

Você também pode experimentar a Visualização do usuário final de abril, que é instalada no Visual Studio 2013. (observação: essa visualização do VS 2013 está desatualizada e não é mais atualizada)

Portanto, se você quiser usar a versão mais recente, precisará fazer o download do Visual Studio 2015 .

Patrick Hofman
fonte
7
infelizmente, a visualização do usuário final do vs 2013 foi encerrada :(
Hassaan
4
Apenas para ter certeza, não há uma maneira suportada de escrever em C # 6 usando o VS 2013? Eu tenho que usar o VS 2015?
vorou
2
Está correto. @vorou ​​Não há versão recente da prévia do VS 2013.
Patrick Hofman
5
Na verdade, essa é uma maneira (veja minha resposta). Mas é diferente do que você poderia fazer meses atrás antes do lançamento final.
David De Sloovere
1
nenhuma das soluções deste tópico ou de outros tópicos semelhantes me ajudou. então a única solução é mudar para o VS 2015, eu acho.
Yar
177

No VS2013, você pode instalar os novos compiladores no projeto como um pacote de nuget . Dessa forma, você não precisa do VS2015 ou de um servidor de compilação atualizado.

https://www.nuget.org/packages/Microsoft.Net.Compilers/

Install-Package Microsoft.Net.Compilers

O pacote permite que você use / crie código / sintaxe C # 6.0. Como o VS2013 não reconhece nativamente a nova sintaxe do C # 6.0, ele mostrará erros na janela do editor de código, embora seja compilado corretamente .

Usando o Resharper, você obterá linhas irregulares nos recursos do C # 6, mas a lâmpada oferece a opção de 'Ativar o suporte ao C # 6.0 para este projeto' (configuração salva em .DotSettings).

Como mencionado por @ stimpy77: para suporte nas visualizações do MVC Razor, você precisará de um pacote extra (para aqueles que não lêem os comentários)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Se você deseja suporte completo ao C # 6.0, precisará instalar o VS2015.

David De Sloovere
fonte
8
Os construtores primários foram realmente removidos da versão final. É por isso que eles não funcionam.
MarkDonohoe
8
Só quero apontar para quem quiser usar o C # 6 no Razor em um projeto MVC5, parece que é um pacote NuGet separado e necessário, mesmo se você estiver usando o VS2015. Veja stackoverflow.com/a/30832849/11398
Jon Davis
2
Funciona (como você pode compilar), no entanto, o VS2013 ainda mostra erros: stackoverflow.com/questions/35796001/…
mnwsmit 4/16/16
2
hehehe. Isso foi legal. O compilador mostra os erros antecipadamente, mas compila com sucesso quando realmente compilado. Que truque para começar uma manhã de fim de semana!
RBT
1
ele mostrará erros na janela do editor de código, embora seja compilado corretamente. Apenas senti a necessidade de apontar novamente. Ótima resposta!
meJustAndrew
5

Muitas das respostas aqui foram escritas antes de Roslyn (os compiladores .NET C # e VB de código aberto) migrar para o .NET 4.6. Portanto, eles não o ajudarão se o seu projeto atingir, digamos, 4.5.2 como o meu (herdado e não pode ser alterado).

Mas você pode pegar uma versão anterior do Roslyn em https://www.nuget.org/packages/Microsoft.Net.Compilers e instalá-la em vez da versão mais recente. Eu usei 1.3.2. (Tentei a 2.0.1 - que parece ser a última versão que roda no .NET 4.5 - mas não consegui compilar *.) Execute isso no console do Gerenciador de Pacotes no VS 2013:

PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2

Em seguida, reinicie o Visual Studio. Eu tive alguns problemas inicialmente; você precisa definir a versão do C # de volta ao padrão (o C # 6.0 não aparece na lista de versões, mas parece ter sido o padrão), depois limpar, salvar, reiniciar o VS e recompilar.

Curiosamente, não tive nenhum erro do IntelliSense devido aos recursos do C # 6.0 usados ​​no código (que foram o motivo para desejar o C # 6.0 em primeiro lugar).

* versão 2.0.1 gerou erro A tarefa "Microsoft.CodeAnalysis.BuildTasks.Csc não pôde ser carregada do assembly Microsoft.Build.Tasks.CodeAnalysis.dll. Não foi possível carregar o arquivo ou assembly 'Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'ou uma de suas dependências. O sistema não consegue encontrar o arquivo especificado. Confirme se a declaração está correta, se o assembly e todas as suas dependências estão disponíveis e se a tarefa contém um arquivo classe pública que implementa Microsoft.Build.Framework.ITask.

ATUALIZAÇÃO Uma coisa que notei desde a publicação desta resposta é que, se você alterar qualquer código durante a depuração ("Editar e continuar"), verá que seu código C # 6.0 aparecerá repentinamente como erros no que parece reverter para um ambiente anterior ao C # 6.0. Isso requer uma reinicialização da sua sessão de depuração. MUITO chato, especialmente para aplicativos da web.

SteveCinq
fonte
@RichBianco Isso é ótimo - obrigado pelo feedback e pela votação. Pessoalmente, não consigo entender por que a v2.0.1 não funciona. Se alguém tiver alguma pista sobre isso - como se livrar do erro que relatei -, poste sua correção.
26418 SteveCinq
4

Vale ressaltar que o tempo de compilação será aumentado para usuários do VS 2015 após :

Install-Package Microsoft.Net.Compilers

Aqueles que estão usando o VS 2015 e precisam manter esse pacote em seus projetos podem corrigir o aumento do tempo de criação .

Edite o arquivo packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.propse limpe-o. O arquivo deve se parecer com:

<Project DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

Isso força o projeto a ser construído como era antes de adicionar o Microsoft.Net.Compilerspacote

Ashot Muradian
fonte
2

É possível usar os recursos completos do C # 6.0 no Visual Studio 2013 se você tiver o Resharper.
Você precisa habilitar o Resharper Build e pronto! Em Opções do resharper -> Compilar - habilite a compilação do resharper e, em "Usar versão do MSBuild.exe", escolha "Última instalação"

Dessa forma, o Resharper criará seus Projetos C # 6.0 e também não sublinhará o código C # 6.0 como inválido.

Também estou usando isso, embora eu tenha o Visual Studio 2015 porque:

  1. Os testes de unidade no Resharper não funcionam para mim com o Visual Studio 2015 por algum motivo
  2. O VS 2015 usa muito mais memória que o VS 2013.

Estou colocando isso aqui, pois estava procurando uma solução para esse problema já há algum tempo e talvez isso ajude outra pessoa.

devdimi
fonte
-1

Parece que há algum mal-entendido. Portanto, em vez de tentar corrigir o VS2013, aqui está a resposta de um funcionário da Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-sempre-apoiado-contra-2013? Forum = roslyn

Então, leia e instale o VS2015.

Alexander Christov
fonte
1
o link me dá 'não autorizado', mesmo após o login da ms. Obviamente, instalar o VS2015 ou posterior é uma despesa de US $ 000.000 em algumas configurações.
Chris F Carroll