How to use C# 6.0 features without Visual Studio?
The following C# 6.0 Code does not work:
using static System.Console; class Program { static void Main() { WriteLine("Hello world!"); } } Here's the Error:
>csc CS6.cs Microsoft (R) Visual C# Compiler version 4.6.1055.0 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. CS6.cs(1,7): error CS1041: Identifier expected; 'static' is a keyword CS6.cs(1,14): error CS1518: Expected class, delegate, enum, interface, or struct Here's the C# Code to determine which .NET Framework versions are installed:
using System; using Microsoft.Win32; class RegistryVersion { private static void GetVersionFromRegistry() { // Opens the registry key for the .NET Framework entry. using (RegistryKey ndpKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ""). OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\")) { // As an alternative, if you know the computers you will query are running .NET Framework 4.5 // or later, you can use: // using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, // RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\")) foreach (string versionKeyName in ndpKey.GetSubKeyNames()) { if (versionKeyName.StartsWith("v")) { RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName); string name = (string)versionKey.GetValue("Version", ""); string sp = versionKey.GetValue("SP", "").ToString(); string install = versionKey.GetValue("Install", "").ToString(); if (install == "") //no install info, must be later. Console.WriteLine(versionKeyName + " " + name); else { if (sp != "" && install == "1") { Console.WriteLine(versionKeyName + " " + name + " SP" + sp); } } if (name != "") { continue; } foreach (string subKeyName in versionKey.GetSubKeyNames()) { RegistryKey subKey = versionKey.OpenSubKey(subKeyName); name = (string)subKey.GetValue("Version", ""); if (name != "") sp = subKey.GetValue("SP", "").ToString(); install = subKey.GetValue("Install", "").ToString(); if (install == "") //no install info, must be later. Console.WriteLine(versionKeyName + " " + name); else { if (sp != "" && install == "1") { Console.WriteLine(" " + subKeyName + " " + name + " SP" + sp); } else if (install == "1") { Console.WriteLine(" " + subKeyName + " " + name); } } } } } } } static void Main() { GetVersionFromRegistry(); } } Here's the output for the C# Code to determine which .NET Framework versions are installed:
>csc FrameworkVersion.cs Microsoft (R) Visual C# Compiler version 4.6.1055.0 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. >FrameworkVersion.exe v2.0.50727 2.0.50727.4927 SP2 v3.0 3.0.30729.4926 SP2 v3.5 3.5.30729.4926 SP1 v4 Client 4.6.01055 Full 4.6.01055 v4.0 Client 4.0.0.0 Please note that this question is about C# 6.0 without any Visual Studio/IDE.