これはサポートされていますか?
もしそうなら、それを有効にするためのいくつかのトリックはありますか?Razorが十分に新しいコンパイラを使用していないと思います...?VS2015 IDEはそれで問題ないようですが、実行時に私は得ています
CS1056:予期しない文字「$」
これはサポートされていますか?
もしそうなら、それを有効にするためのいくつかのトリックはありますか?Razorが十分に新しいコンパイラを使用していないと思います...?VS2015 IDEはそれで問題ないようですが、実行時に私は得ています
CS1056:予期しない文字「$」
回答:
更新:
Visual Studio 2015 Update 1以降、GUIには以下の手順を実行する簡単なプロセスがあります。Webプロジェクトを右クリックして、「C#6 / VB 14を有効にする」を選択するだけです。詳細については、MSDNブログの投稿「C#6 / VB 14を有効にする新機能」を参照してください。
この回答が書かれてから、この機能はNuGetパッケージの支援を受けて追加されました。
MVC5を使用している場合は、このNugetパッケージをソリューションに追加します。
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
nugetパッケージはweb.configを変更する必要がありますが、次の構成がweb.configファイルにあることを確認してください(追加されていない場合)。
<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>
MVC6では、これは組み込みです。
元の答え:
<div>
@($"Hello {this.Model.SomeProperty}")
</div>
これは、MVC6を備えたC#6でのみ機能します。C#6コンパイラーでMVC5を実行している場合でも、機能しません。
トリックは、かみそりパーサーはまだいくつかの構文を認識するほどスマートではないため、全体をかっこで囲む必要があります(?.
かみそりビューでnull条件演算子()を使用する場合もこれを行う必要があります)。
とは言っても、Razorの文字列補間はMVC6の現時点では少しバグが多いので、問題があったとしても驚かないでしょう。それらが扱われるかどうかは別の問題です。
パッケージマネージャーコンソールで次のコマンドを実行して、必要なCodeDom
プロバイダーをプロジェクトに追加します。必要な設定をweb.config
追加するCodeDom
ためにファイルを自動的に変更します。
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
再起動 Visual Studio
注:として@Jakeはあなたが持っている場合は、この答えの下で彼のコメントで述べたDotNetCompilerPlatform
すでにそれだけで更新する必要があり、パッケージを。
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.