Est-ce pris en charge?
Si oui, y a-t-il une astuce pour l'activer? Je suppose que Razor n'utilise pas un compilateur assez récent ...? L'IDE VS2015 semble bien fonctionner, mais au moment de l'exécution, je reçois
CS1056: caractère inattendu '$'
Est-ce pris en charge?
Si oui, y a-t-il une astuce pour l'activer? Je suppose que Razor n'utilise pas un compilateur assez récent ...? L'IDE VS2015 semble bien fonctionner, mais au moment de l'exécution, je reçois
CS1056: caractère inattendu '$'
Réponses:
Mise à jour :
À partir de Visual Studio 2015 Update 1, il existe un processus simple dans l'interface graphique pour effectuer les étapes ci-dessous pour vous. Cliquez simplement avec le bouton droit de la souris sur votre projet Web et sélectionnez «Activer C # 6 / VB 14». Plus d'informations sont disponibles sur le billet de blog MSDN, " Nouvelle fonctionnalité pour activer C # 6 / VB 14 ".
Depuis que cette réponse a été écrite, cette fonctionnalité a été ajoutée à l'aide d'un package NuGet.
Ajoutez ce package Nuget à votre solution si vous utilisez MVC5.
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
Le package nuget devrait modifier votre web.config, mais vérifiez que la configuration suivante est dans votre fichier web.config (et si ce n'est pas le cas):
<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>
Dans MVC6, c'est intégré.
Réponse originale:
<div>
@($"Hello {this.Model.SomeProperty}")
</div>
Cela ne fonctionne qu'en C # 6 avec MVC6. Même si vous exécutez MVC5 avec le compilateur C # 6, cela ne fonctionnera pas.
L'astuce est que l'analyseur de rasoir n'est pas encore assez intelligent pour reconnaître certaines syntaxes, vous devez donc mettre le tout entre parenthèses (vous devez également le faire lorsque vous utilisez l'opérateur conditionnel nul ( ?.
) dans vos vues de rasoir).
Cela dit, l'interpolation de chaîne dans Razor est un peu boguée pour le moment dans MVC6, donc je ne serais pas surpris s'il y avait des problèmes avec cela. si oui ou non ils seront traités est une autre question.
Exécutez la commande suivante dans la console du gestionnaire de package pour ajouter un CodeDom
fournisseur requis à votre projet. Il modifiera web.config
automatiquement votre fichier pour y ajouter CodeDom
les paramètres requis.
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Redémarrer Visual Studio
Remarque: comme @Jake l'a mentionné dans son commentaire sous cette réponse, si vous avez DotNetCompilerPlatform
déjà le paquet, il peut simplement avoir besoin d'être mis à jour.
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.