C# 6 und Visual Basic 14 in ASP.NET-Webseiten nutzen

Der Dotnet-Doktor  –  0 Kommentare

Um die neuen Sprachfeatures in ASP.NET zu nutzen, sind Änderungen am Webprojekt notwendig.

Die im Rahmen von .NET Framework 4.6 erschienenen Sprachversionen C# 6 und Visual Basic 14 bieten syntaktische Zuckerstückchen für die Softwareentwickler. Dabei lassen sich einige (aber nicht alle) der Sprachfeatures auch in älteren .NET-Versionen verwenden, wenn Visual Studio 2015 zum Einsatz kommt.

Leider will die Nutzung der neuen Sprachsyntax bei Inline-Code von ASP.NET Webforms- und ASP.NET MVC-Web-Projekten innerhalb der Webseiten (.aspx, .ascx, .cshtml oder .vbhtml) nicht gelingen, selbst wenn das Projekt auf .NET 4.6 hochstuft ist. Wenn beispielsweise ein String zur Interpolation von Webseiten zum Einsatz kommt:

<%# $"Name {Item.Kundenname} wohnt in {Item.Ort}"%>

warnt Visual Studio "Feature 'interpolated Strings' is not available in C# 5. Please use language version 6 or greater" und zur Laufzeit erscheint der Fehler: "CS1056: Unexpected character '$'". Das liegt daran, dass der Programmcode in Webseiten nicht von Visual Studio, sondern vom CodeDOM des .NET Framework übersetzt wird.

Für die Hochstufung auf C# 6.0 muss zunächst ein Nuget-Paket installiert werden:

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Als nächstes müssen folgende Einträge in der web.config-Datei ergänzt werden, sofern das Nuget-Paket das nicht erledigt hat:

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

Zum Schluss steht eine Neukompilierung des gesamten Projekts an. Dadurch entsteht ein Ordner \bin\roslyn\, in dem unter anderem die aktuelle Version der Compiler (csc.exe und vbc.exe) liegen. Danach ist die neue Syntax auch in den Webseiten anwendbar.

Beim Anlegen eines neuen Web-Projekts in Visual Studio mit .NET Framework 4.5, 4.5.1 oder 4.5.2 als Grundlage erfolgen die Einbindung der Pakete und die web.config-Einstellungen automatisch.