webentwicklung-frage-antwort-db.com.de

MVC-Rasiereransicht von Asp.net - CS1525: Ungültiger Ausdruck '.'

Ich habe zwei identische MVC-Projekte in ASP.Net 4.6. Projekt 1 verwendet roslyn complier innerhalb der Site, die einwandfrei funktioniert. 

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

Beim zweiten Projekt erhalte ich den folgenden Fehler: Es wird das Complier von .NET Framework verwendet.

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

Ich habe Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform für beide Projekte verwendet.

Meine Frage ist, warum das zweite Projekt Roslyn Complier nicht verwendet. Gibt es eine Möglichkeit, das Roslyn Complier innerhalb der Site zu verwenden? 

Ich habe auch versucht, Microsoft.Net.Compilers Nuget-Paket.

8
Huzzi

Es funktioniert jetzt, nachdem der web.config Folgendes hinzugefügt wurde

<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

Ich war gerade mit einem ähnlichen Problem konfrontiert und habe dieses Problem behoben, indem ich die von Huzzi vorgeschlagenen Maßnahmen durchführte, indem ich die Tags in die web.config des Hauptprojekts hinzufügte und sicherstellte, dass "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" von nuget installiert wurde.

3
TamerM

Ändern Sie den Wert "Zielframework" in Ihren Anwendungseigenschaften auf einen neueren.

2
Samuil Petrov