webentwicklung-frage-antwort-db.com.de

C # 6.0-Funktionen, die nicht mit Visual Studio 2015 funktionieren

Ich teste Visual Studio 2015 mit C # 6.0, aber die Sprachfunktionen funktionieren nicht. In einer MVC-Webanwendung wird der folgende Code kompiliert:

if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
    // More logic here...
}

Wenn ich die Anwendung jedoch über Debug und IIS Express ausführe, wird die folgende Fehlermeldung angezeigt:

CS1525: Ungültiger Ausdrucksausdruck '.'

Wie aktiviere ich diese Funktionen?

133

Dies funktioniert in MVC 5 (getestet 5.2.3), Sie müssen nur das Roslyn-Code-Dom-Nuget-Paket hinzufügen

CodeDOM-Anbieter für .NET Compiler ...

Ersatz-CodeDOM-Anbieter, die den neuen .NET Compiler Platform-Compiler ("Roslyn") als Service-APIs verwenden. Dies bietet Unterstützung für neue Sprachfunktionen in Systemen, die CodeDOM verwenden (z. B. ASP.NET-Laufzeitkompilierung) und verbessert die Kompilierungsleistung dieser Systeme.

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

204
jbtule

Nun, ich habe MVC5 und vor kurzem VS 2015 installiert.

Ich habe das CodeDOM-Provider-Paket installiert, aber es hat nicht geholfen ... Aber danach wurde mir klar, dass dieses Paket nur Framework 4.5 unterstützt, während ich das Ziel-Framework während der Tests auf 4.6 gesetzt habe - es funktioniert jedoch mit 4.5 ...

Achten Sie also auch auf das Zielgerüst. Wenn Sie über 4.5 verfügen, installieren Sie einfach das Paket Microsoft.CodeDom.Providers.DotNetCompilerPlatform. Wenn Sie jedoch 4.5.1-4.6 als Ziel haben, müssen Sie im Abschnitt web.config Änderungen vornehmen

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
      <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>

Ändern Sie für C # einfach Typ in:

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
17
Sergey Kljopov

Ich hatte das gleiche Problem in Visual Studio 2015. Eine andere Antwort hier bezog sich auf die von mir verwendete Lösung, aber sie gaben den Fix falsch an und gaben keine Klärung.

Wählen Sie in dem Visual Studio-Menü Project aus, und Sie sollten das Unterelement Enable C # 6/VB 14 anzeigen, wenn Sie sind Wählen Sie diesen Menü-Unterpunkt aus, um die richtigen Pakete von Nuget herunterzuladen und zu installieren. Starten Sie danach Visual Studio neu und laden Sie Ihre Lösung neu.

Ich kann nicht überprüfen, ob dadurch auch die Auswahl Projekteigenschaften> Erstellen> Erweitert> Sprachversion auf C # 6 festgelegt wird. Daher möchten Sie dies möglicherweise auch überprüfen, nachdem Sie C # 6 aktiviert haben aus dem Menü.

16
Tom K

Überprüfen Sie Ihre Projekteigenschaften, rufen Sie Build, Advanced auf und prüfen Sie, ob C # 6.0 die Standardeinstellung ist.

Momentan gibt es perfekte Unterstützung für MVC5 und C # 6.0 und es funktioniert erstaunlich gut!

14
Bart Calixto

Einschließlich des Hinweises, den neuesten Microsoft.CodeDom.Providers.DotNetCompilerPlatform Zu installieren, musste ich auch meinen rootWeb.configsystem.codedom Auf diesen setzen, um endlich alle Fehler zu erhalten Visual Studio 2015 Um wegzugehen:

  <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>

Starten Sie nun Visual Studio Neu und das sollte es tun.

9
Serj Sagan

Visual Studio 2015 zeigt auch ein Enable C#6 / VB 14 Im Menü Projekt mit einer ausgewählten ASP.NET-Website/Webanwendung an.

Dadurch werden de facto die Pakete Microsoft.CodeDom.Providers.DotNetCompilerPlatform Und Microsoft.Net.Compilers In Ihrem Projekt installiert und die entsprechenden Tags in die Datei web.config eingefügt.

visual studio 2015 - enable cs6 snipp

6
Michal Šuvada