web-dev-qa-db-fra.com

Asp.net MVC Razor view - CS1525: Terme d'expression non valide '.'

J'ai deux projets ASP.Net 4.6 MVC identiques, le projet 1 utilise le logiciel Roslyn Complier sur le site, qui fonctionne correctement. 

c:\windows\system32\inetsrv> C:\sites Web1\bin\roslyn\csc.exe Compilateur Microsoft Visual C # version 1.2.0.60325

Avec le second projet, l'erreur ci-dessous apparaît, il utilise le complier du framework .Net.

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

J'ai utilisé Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform sur les deux projets.

Ma question est la suivante: pourquoi le second projet n'utilise-t-il pas Roslyn Complier et existe-t-il un moyen de le forcer à utiliser Roslyn Complier sur le site? 

J'ai également essayé Microsoft.Net.Compilers nuget package.

8
Huzzi

Je travaille maintenant après avoir ajouté ce qui suit au 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>
10
Huzzi

Je viens de faire face à un problème similaire et de le résoudre comme Huzzi le suggérait en ajoutant les balises dans le fichier web.config du projet Web principal et en veillant à installer "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" de nuget.

3
TamerM

Essayez de remplacer la valeur "Cadre cible" dans les propriétés de votre application par une nouvelle.

2
Samuil Petrov