Asp.net MVC Razor视图 - CS1525:无效的表达术语'。'

时间:2016-10-25 08:41:13

标签: asp.net-mvc razor roslyn c#-6.0

我有两个相同的ASP.Net 4.6 MVC项目,项目1在网站内使用roslyn编译器工作正常。

C:\ Windows \ System32下\ INETSRV> C:\ Websites1 \ BIN \罗斯林\ CSC.EXE Microsoft(R)Visual C#编译器版本1.2.0.60325

在第二个项目中,我收到了以下错误,它使用了.Net框架中的编译器。

C:\ Windows \ System32下\ INETSRV> " C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CSC.EXE" Microsoft(R)Visual C#编译器版本4.6.1590.0

Line 6: @if (!Model?.Item?.IsDerived(Templates.PageMetadata.ID) ?? true) Line 7: { Line 8: return;

c:\Website2\Views\metadata.cshtml(6,17): error CS1525: Invalid expression term '.' c:\Website2\Views\metadata.cshtml(6,18): error CS1003: Syntax error, ':' expected c:\Website2\Views\metadata.cshtml(6,23): error CS1525: Invalid expression term '.' c:\Website2\Views\metadata.cshtml(6,24): error CS1003: Syntax error, ':' expected c:\Website2\Views\metadata.cshtml(6,68): error CS1002: ; expected c:\Website2\Views\metadata.cshtml(6,68): error CS1525: Invalid expression term ')' c:\Website2\Views\metadata.cshtml(6,69): error CS1002: ; expected

我在两个项目中都使用了安装包Microsoft.CodeDom.Providers.DotNetCompilerPlatform

我的问题是为什么第二个项目没有使用roslyn编译器,是否有办法强制它使用站点内的roslyn编译器?

我还尝试过 Microsoft.Net.Compilers nuget包。

3 个答案:

答案 0 :(得分:10)

将以下内容添加到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=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

答案 1 :(得分:3)

我刚刚遇到了类似的问题并通过将Hutag建议添加到主Web项目的web.config并确保您已经从nuget安装了“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”来修复它。

答案 2 :(得分:2)

尝试更改&#34;目标框架&#34;应用程序属性中的值为较新的值。