2015-07-29 9 views
23

Attualmente il mio motore di visualizzazione del rasoio genera e errore "Si prega di utilizzare la lingua versione 6 o successiva". Quello potrebbe essere solo un resharper che mi dà un puntatore. Ma come faccio a usare il rasoio C# 6.0. Resto della mia soluzione nei file cs posso usare tutte le nuove funzionalità della versione 7.Come rendere il motore di visualizzazione del rasoio per utilizzare C# 6.0

+0

possibile duplicato del [C# 6.0 Caratteristiche che non funzionano con Visual Studio 2015] (http://stackoverflow.com/questions/27968963/c-sharp-6-0-funzioni-non-working-with-visual-studio-2015) – cadrell0

+0

no - questa soluzione non ha risolto questo problema. – MoXplod

risposta

5

Se si sta eseguendo questo da un progetto 4.5.1, l'aggiornamento a 4.5.2 potrebbe risolvere il problema.

In caso contrario, si consiglia di installare questo pacchetto NuGet offrire le nuove funzionalità: Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Così facendo qualcosa di simile:

<p>@Model.Person?.Name</p> 

potrebbe funzionare. In caso contrario, cercare di essere esplicito in questo modo:

<p>@(Model.Person?.Name)</p> 
15

Credo che questo è dovuto a un bug nei modelli per web.config quando il progetto viene aggiornato a una versione più recente di .NET Framework.

sono stato in grado di risolvere questo problema andando a web.config, trovando il nodo system.codedom, e cambiando il contenuto di simile a questa:

<compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> 
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> 
</compilers> 
+4

Microsoft.Net.Compilers e Microsoft.CodeDom.Providers.DotNetCompilerPlatform deve essere installato per funzionare – Anytoe

+1

(Re-) L'installazione dei due pacchetti precedenti aggiungerà questa sezione al file .config. –

+1

Sì, grazie @Alen, e ho scoperto che basta installare Nuget pkg per Microsoft.CodeDom.Providers.DotNetCompilerPlatform poiché Microsoft.Net.Compilers è una dipendenza. –

0

Le migliori istruzioni passo-passo che ho trovato per abilitare Le caratteristiche di C# 6 nei modelli RazorEngine sono qui: https://github.com/Antaris/RazorEngine/issues/363#issuecomment-273106183

Ciò che non è menzionato in c'è per assicurarsi che quando si aggiunge la sezione di compilatori al proprio app.config, che il numero di versione corrisponda alla versione dal pacchetto che si sta installando. Nel commento è stato la versione 1.0.3, ma il pacchetto che ho installato avuto 1.0.4, invece, in modo che doveva assomigliare a questo:

<system.codedom> 
<compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> 
</compilers> 

0

altre risposte sono abbastanza buoni, ma ho trovato un il bene e il breve articolo che chiarire definitivamente i passi di questo problema: https://cpratt.co/using-csharp-6-or-7-with-mvc-5/

In breve:

  1. Nella console di Package manager installare 012.393.750.967.

  2. Checka/altera si web.config con le seguenti righe alla fine:

<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> </compilers> </system.codedom>

Problemi correlati