支持吗?
如果是这样,是否有一些技巧可以启用它?我假设Razor没有使用足够新的编译器......? VS2015 IDE似乎很好用,但在运行时我正在
CS1056:意外字符'$'
答案 0 :(得分:111)
<强>更新强>:
从Visual Studio 2015 Update 1开始,GUI中有一个简单的过程,可以为您执行以下步骤。只需右键单击您的Web项目,然后选择&#34;启用C#6 / VB 14&#34;。有关详细信息,请参阅MSDN博客文章&#34; New feature to enable C# 6 / VB 14&#34;。
由于编写了这个答案,因此在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,它也无法工作。
诀窍是剃刀解析器还不够聪明,无法识别某些语法,因此必须将整个事物包装在括号中(在使用空条件运算符(?.
)时必须这样做)剃刀观点也是如此。
那就是说,在MVC6中,Razor中的字符串插值是a bit buggy,所以如果存在一些问题,我不会感到惊讶。他们是否会被解决是另一回事。
答案 1 :(得分:10)
在 Package Manager Console
中运行以下命令,为项目添加必需的CodeDom
提供程序。它还会自动修改您的web.config
文件,以便向其添加CodeDom
个必需设置。
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Visual Studio
注意:正如 @Jake 在此回答中的评论中提到的,如果您已经有
DotNetCompilerPlatform
个套餐,那么请尝试更新它。