是否支持?
如果是这样,是否有启用它的技巧?我假设Razor没有使用足够新的编译器...?VS2015 IDE似乎很好用,但是在运行时我得到了
CS1056:意外字符“ $”
是否支持?
如果是这样,是否有启用它的技巧?我假设Razor没有使用足够新的编译器...?VS2015 IDE似乎很好用,但是在运行时我得到了
CS1056:意外字符“ $”
Answers:
更新:
从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条件运算符()时也必须这样做)。
就是说,在MVC6中,Razor中的字符串插值目前有点bug,因此如果出现一些问题,我也不会感到惊讶。是否解决这些问题是另一回事。
在程序包管理器控制台中运行以下命令,以将所需的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.