Evolution And History Of C# 6 With Visual Studio 2015

In this article I will explain about C# all versions from C# 1.0 to C# 6.0 and Visual Studio Version from Visual Studio 2002 (7.0) to Visual Studio 2015 (14.0). But discussion will be more emphasized on C# 6 and Visual Studio 2015.

history

C# 6 introduced about a year ago and it has a lot of new features and after release of Visual Studio 2015 C# 6 became the default language version of C#. If you are creating a project in Visual Studio 2015 with latest version of framework then the default version of C# is C# 6. But you can change it to C# 5 or lower version check it out here.

Before starting discussion on any feature I am going to explain about different versions of C#, ASP.NET, .NET Framework and Visual Studio.

Versions of C#

C# 1.0

  1. Managed Code

C# 2.0

  1. Generics
  2. Partial Types
  3. Static classes
  4. Method group conversions
  5. Co- and Contra-variance for delegates
  6. Delegate inference
  7. Anonymous Methods
  8. Getter/setter separate accessibility
  9. Nullable types
  10. Iterator blocks

Andso on.

C# 3.0

  1. Implicitly typed local variables
  2. Object and collection initializers
  3. Auto-Implemented properties
  4. Partial methods
  5. Anonymous types
  6. Extension methods
  7. Query expressions
  8. Lambda expressions
  9. Expression trees

And so on.

C# 4.0

  1. Dynamic binding
  2. Named and optional argumentsdetails
  3. Parallel Programmingmore
  4. Generic co- and contravariance
  5. Embedded interop types.

And so on.

C# 5.0

  1. Asynchronous methods
  2. Caller info attributes

C# 6.0

  1. Compiler-as-a-service (Roslyn)
  2. Getter-Only & Auto Properties Initializersdetails
  3. Index Initializers details
  4. Default values for getter-only propertiesdetails
  5. NULL Conditional Operatordetails
  6. String Interpolationdetails
  7. nameof operator
  8. Dictionary initializer
  9. Using Static in using block as directive (Import of static type members into namespace)

    a. Using Static Classes as Directive details
    b. Using Non-Static classes in using block as Directive details
    c. Using Enum in using Block as Directive details

  10. Expression-bodied members

    a. Expression-Bodied Properties details
    b. Expression-Bodied Methods details

  11. Exception filters
  12. Await in catch/finally blocks

Some language features of C# 6 have been modified or removed in latest releases of Visual Studio 2015. You can check it out here.

Versions of Visual Studio

Product NameVersion Number Codename
Visual Studio .NET 20027.0Rainier
Visual Studio .NET 2003 7.1Everett
Visual Studio 20058.0Whidbey
Visual Studio 2008 9.0Orcas
Visual Studio 201010.0Dev10/Rosario
Visual Studio 201211.0Dev11
Visual Studio 201312.0Dev12
Visual Studio 2015 14.0Dev14

Versions of .NET Frameworks

Version NumberDevelopment Tool CLR Version Release Year
Microsoft .NET Framework 1.0 Visual Studio .NET 2002 CLR 1.0 2002
Microsoft .NET Framework 1.1 Visual Studio .NET 2003 CLR 1.1 2003
Microsoft .NET Framework 2.0 Visual Studio 2005 CLR 2.0 2005
Microsoft .NET Framework 3.0 Visual Studio 2005 CLR 2.0 2006
Microsoft .NET Framework 3.5 Visual Studio 2008 CLR 2.0 2007
Microsoft .NET Framework 4.0 Visual Studio 2010 CLR 4 2010
Microsoft .NET Framework 4.5 Visual Studio 2012 CLR 4 2012
Microsoft .NET Framework 4.5.1 Visual Studio 2013 CLR 4 2013
Microsoft .NET Framework 4.5.2 Visual Studio 2013 CLR 4 2014
Microsoft .NET Framework 4.6 Visual Studio 2015 CLR 4 2015
Microsoft .NET Framework 4.6.1 Visual Studio 2015 Update 1 CLR 4 2015

History of ASP.NET

Name Release Year
ASP 1996
ASP.NET2002
ASP.NET MVC2008
ASP.NET Web Form 2010
ASP.NET Web API, SignalR2012
ASP.NET 52015

Visual Studio 2015 new features

  1. A new setup experience.
  2. Sign in across multiple accounts (Single sign-in).
  3. Choose your target platform(s).

    a. Cross-platform mobile apps in C# with Xamarin for Visual Studio
    b. Cross-platform mobile apps in HTML/JavaScript with Apache Cordova
    c. Cross-platform mobile games in C# with Unity
    d. Cross-platform apps and libraries for native C++
    e. Universal Windows apps for any Windows 10 device

  4. ASP.NET 5

    a. Major update to MVC, WebAPI and SignalR
    b. Supported OS: Windows, Mac, and Linux.
    c. Visual Studio 2015 tooling is more closely integrated with popular web development tools such as Bower and Grunt.
    d. Lean .NET platform for building modern cloud-based apps.

  5. Classic desktop and Windows Store.

  6. The .NET Framework
    Microsoft .NET Framework 4.6 offers about 150 new APIs. (The latest Framework version is 4.6.1 with VS 2015 SP1)

  7. C++
    Visual C++ provides significant advances in C++11/14 language conformance, support for cross-platform mobile device development, support for resumable functions and await.

  8. Device Preview menu bar
    In Universal Windows Platform projects, the device preview menu bar enables you to see how your XAML-based UI will render on various screen sizes.

  9. Visual Studio Graphics Diagnostics
  10. Connect to Services
  11. Cross-platform debugging support

    a. JavaScript / Cordova.
    b. C# / Xamarin.
    c. C++ / Android.

  12. Debugging and Diagnostics

    a. PerfTips
    b. Error List
    c. GPU Usage Tool

  13. Live code analysis (light bulbs)
  14. IDE improvements

    a. Synchronized Settings (Roaming Settings)
    b. Automatic Extension Updates
    c. Title Case Menus
    d. High Resolution Images and Touch Support
    e. Custom Layouts
    f. Notification Hub

  15. Design and modeling tools (Enterprise edition only)

    a. Code maps and dependency graphs
    b. Improved top-down diagrams
    c. Test Projects are styled differently and can be filtered
    d. Simplified external dependency links
    e. Drill-in into dependency links' takes filters into account
    f. Code elements are added to a code map with their context
    g. Get reactive code maps more quickly
    h. Skip rebuilding your solution
    i. Filter code element nodes and groups
    j. Filter relationships to make diagrams easier to read
    k. Create diagrams from the Class View and Object Browser

  16. Other design and modeling changes

    a. Layer diagrams
    b. UML diagrams
    c. Architecture Explorer

  17. Visual Studio Extensibility Tools
  18. Please give feedback

    a. Send a smile
    b. Send a frown
    c. Report crashes, hangs and performance issues
    d. Track your issue in Connect

  19. The .NET Framework 4.6
  20. Entity Framework 4.6.x
  21. New Project System
  22. Cloud Optimized Core CLR
  23. Unification
  24. wwwroot Folder
  25. Project.json File
  26. Framework and Runtimes
  27. K Project

    a. KRE (K Runtime Environment)
    b. KPM (K package Manager)

  28. Class Libraries
  29. Custom Windows Layouts
  30. Azure Tooling
  31. TypeScript
  32. IntelliTest

    c. Parameterized Unit Tests
    d. Test stubs creation

  33. Better Code Editor
  34. Application Insights
  35. Release Management
  36. Git version control

    a. Branches
    b. Remotes management
    c. Detailed history

  37. Rebase in Team Explorer
  38. VSO repositories
  39. Publish to Visual Studio Online
  40. CodeLens:Find what happened to your code (Enterprise and Professional editions only)
  41. Code maps and dependency graphs
  42. XAML Language Service
  43. IIS 10 Express for Visual Studio 2015
  44. Azure SDK 2.7 for .NET
  45. Windows 10 SDK
  46. Python Tools for Visual Studio 2.2
  47. Visual Studio Tools for Unity 2.0
  48. Node.js Tools for Visual Studio 1.1
  49. Office Developer Tools for Visual Studio 2015

    a. Development with Office 365 APIs
    b. SharePoint add-in development
    c. Office add-in development

  50. GitHub Extension for Visual Studio 2015

    a. The easiest way to connect to your GitHub repositories in Visual Studio. Easy to instal
    b. Connect to GitHub in Visual Studio
    c. Create repositories
    d. Clone repositories with one click
    e. Publish your local work to GitHub

  51. Shared Project – “All the Things!”
  52. Cloud-based Load Testing

    a. Cloud-based load testing from Azure datacentres worldwide
    b. Cloud-based Load Test now supports advanced agent diagnostics

  53. IntelliSense for Bower and NPM
  54. Debug Lambdas
  55. More features for Blend
  56. XAML IntelliSense
  57. Peek in XAML
  58. Visual C++ for Cross-Platform Mobile Development
  59. NuGet

    a. NuGet 2.8.3
    b. NuGet Package Manager
    c. NuGet Gallery

  60. Visual Studio Tools for Apache Cordova
  61. JavaScript

    a. JavaScript Editor Support
    b. Tooling support for AngularJS
    c. New JavaScript language features (from the ES6 version of JavaScript) are supported, including classes, arrow functions, and template strings.
    d. Nav bar shared project support
    e. New navigation bar
    f. JSDoc comments
    g. Object literal IntelliSense
    h. Expand/collapse. You can expand and collapse more sections of your JavaScript code, including multi-line comments, multi-line arrays, and all multi-line blocks.
    i. Task List support

  62. Visual Studio Emulator for Android
  63. Visual Studio Tools for Universal Windows App Development
  64. Language Features

    a. Resumable Functions (resume/await)
    b. Generic (Polymorphic) Lambda Expressions
    c. Generalized Lambda Capture Expressions
    d. Binary Literals
    e. Return Type Deduction
    f. decltype(auto)
    g. Implicit Generation of Move Special Member Functions
    h. Inheriting Constructors
    i. Alignment Query and Control
    j. Extended sizeof
    k. Constexpr
    l. User-Defined Literals (UDLs)
    m. Thread-Safe "Magic" Statics
    n. Thread-Local Storage
    o. noexcept operator
    p. Inline Namespaces
    q. Unrestricted Unions
    r. New Character Types and Unicode Literals
    s. __func__
    t. __restrict
    u. Typename keyword
    v. The globals void operator delete(void *, std::size_t) noexcept and void operator delete[](void *, std::size_t) noexcept can now be overloaded. C++14
    w. Digit separators
    x. Universal character names in literals
    y. Non-static data member initializers
    z. Attributes
    aa. User-Defined Literals (UDLs)
    bb. Data-dependency ordering attributes
    cc. New rules for auto with braced-init-lists

  65. Visual C++ Library Features
  66. Visual C++ Faster Builds
  67. Visual C++ Performance and Code Quality
  68. Visual C++ Productivity, Debugging, and Diagnostics
    And many more features.