ASP.NET MVC Razor视图 - CS1525:无效的表达式项“。”。

9

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

c:\windows\system32\inetsrv>C:\Websites1\bin\roslyn\csc.exe Microsoft (R) Visual C# Compiler version 1.2.0.60325

第二个项目出现以下错误,它使用来自.NET框架的编译器。

c:\windows\system32\inetsrv> "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" Microsoft (R) Visual C# Compiler version 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

我在两个项目中均使用了 Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform.

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

我还试过使用Microsoft.Net.Compilers nuget包。

3个回答

14

在将以下内容添加到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.0.3版本,则必须将“1.0.0.0”更改为“1.0.3.0”。 - DdW

3

我刚遇到类似的问题,按照Huzzi建议的方式,将<compilation>标签添加到主Web项目的web.config文件中,并确保从nuget安装了'Microsoft.CodeDom.Providers.DotNetCompilerPlatform'。


2

尝试在应用程序属性中将“目标框架”值更改为更新的版本。


我已经尝试将其更改为5.2。没有任何区别。 - Huzzi
我尝试了不同的版本,如4.6.1 / 5.2,但没有任何区别。 - Huzzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接