È supportato?
Se è così, c'è qualche trucco per abilitarlo? Presumo che Razor non stia usando un compilatore abbastanza nuovo ...? L'IDE VS2015 sembra andare bene con esso ma in fase di esecuzione sto ottenendo
CS1056: carattere imprevisto "$"
È supportato?
Se è così, c'è qualche trucco per abilitarlo? Presumo che Razor non stia usando un compilatore abbastanza nuovo ...? L'IDE VS2015 sembra andare bene con esso ma in fase di esecuzione sto ottenendo
CS1056: carattere imprevisto "$"
Risposte:
Aggiornamento :
A partire da Visual Studio 2015 Update 1, è disponibile un semplice processo nella GUI per eseguire i passaggi seguenti per te. Basta fare clic con il pulsante destro del mouse sul progetto Web e selezionare "Abilita C # 6 / VB 14". Ulteriori informazioni sono disponibili nel post del blog MSDN, " Nuova funzionalità per abilitare C # 6 / VB 14 ".
Da quando è stata scritta questa risposta, questa funzionalità è stata aggiunta con l'assistenza di un pacchetto NuGet.
Aggiungi questo pacchetto Nuget alla tua soluzione se stai usando MVC5.
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Il pacchetto nuget dovrebbe modificare il tuo web.config, ma controlla che la seguente configurazione sia nel tuo file web.config (e se non lo è aggiungilo):
<system.codedom>
<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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
In MVC6, questo è integrato.
Risposta originale:
<div>
@($"Hello {this.Model.SomeProperty}")
</div>
Funziona solo in C # 6 con MVC6. Anche se esegui MVC5 con il compilatore C # 6, non funzionerà.
Il trucco è che il parser razor non è ancora abbastanza intelligente da riconoscere alcune sintassi, quindi devi racchiudere il tutto tra parentesi (devi farlo anche quando usi l'operatore condizionale null ( ?.
) nelle tue viste razor).
Detto questo, l'interpolazione delle stringhe in Razor è un po ' buggata al momento in MVC6, quindi non sarei sorpreso se ci fossero dei problemi con esso. se verranno affrontati o meno è un'altra questione.
Eseguire il comando seguente nella console di Gestione pacchetti per aggiungere un CodeDom
provider richiesto al progetto. Modificherà web.config
automaticamente il file per aggiungervi CodeDom
le impostazioni richieste.
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Ricomincia Visual Studio
Nota: come @Jake ha menzionato nel suo commento sotto questa risposta, se hai già il DotNetCompilerPlatform
pacchetto potrebbe essere necessario aggiornarlo.
Replacement CodeDOM providers that use the new .NET Compiler Platform ("Roslyn") compiler as a service APIs. This provides support for new language features in systems using CodeDOM (e.g. ASP.NET runtime compilation) as well as improving the compilation performance of these systems.