如何使razor view引擎使用c#6.0
目前,我的razor视图引擎抛出错误并说“请使用语言版本6或更高版本”。那可能只是resharper给了我一个指针。但如何让razor使用c#6.0呢。我的解决方案的其余部分在cs文件中,我可以使用所有新版本7的功能。如果您是从如何使razor view引擎使用c#6.0,c#,asp.net,.net,asp.net-mvc,razor,C#,Asp.net,.net,Asp.net Mvc,Razor,目前,我的razor视图引擎抛出错误并说“请使用语言版本6或更高版本”。那可能只是resharper给了我一个指针。但如何让razor使用c#6.0呢。我的解决方案的其余部分在cs文件中,我可以使用所有新版本7的功能。如果您是从4.5.1项目运行此解决方案,升级到4.5.2可能会解决此问题 否则,建议安装此NuGet软件包以提供新功能:Microsoft.CodeDom.Providers.DotNetCompilerPlatform 这样做: <p>@Model.Person?.N
4.5.1
项目运行此解决方案,升级到4.5.2
可能会解决此问题
否则,建议安装此NuGet软件包以提供新功能:Microsoft.CodeDom.Providers.DotNetCompilerPlatform
这样做:
<p>@Model.Person?.Name</p>
<p>@(Model.Person?.Name)</p>
<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>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
</compilers>
@Model.Person?.Name
可能有用。如果没有,请尝试这样明确:
<p>@Model.Person?.Name</p>
<p>@(Model.Person?.Name)</p>
<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>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
</compilers>
@(Model.Person?.Name)
我认为这是由于当项目升级到较新版本的.net framework时,web.config
的模板中存在错误造成的
我可以通过进入web.config
,找到system.codedom
节点,并将内容更改为如下所示来解决此问题:
<p>@Model.Person?.Name</p>
<p>@(Model.Person?.Name)</p>
<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>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
</compilers>
关于RazorEngine模板中的enable C#6功能,我能找到的最佳分步说明如下: 这里没有提到的是,在将compilers部分添加到app.config时,确保版本号与您正在安装的软件包中的版本匹配。在评论中,它是1.0.3版,但我安装的软件包是1.0.4版,因此它需要如下所示:
<p>@Model.Person?.Name</p>
<p>@(Model.Person?.Name)</p>
<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>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
</compilers>
其他答案都很好,但我发现了一篇好而短的文章,明确阐明了解决此问题的步骤: 简言之:
安装软件包Microsoft.CodeDom.Providers.DotNetCompilerPlatform
可能重复的否-该解决方案没有解决此问题。必须安装Microsoft.Net.Compilers和Microsoft.CodeDom.Providers.DotNetCompilerPlatform才能工作(重新)安装上述两个软件包将此部分添加到.config文件中。是的,谢谢@Alen,我发现只要为Microsoft.CodeDom.Providers.DotNetCompilerPlatform安装Nuget pkg就足够了,因为Microsoft.Net.Compilers是一个依赖项。不再依赖Microsoft.Net.Compilers