Normally an article about a programming language and framework that both have been with us for more than a decade would be anything but a page-turner.

When it comes to C# and .NET, it turns out there’s a big story to tell, including things that could spell another decade of that language (and maybe even that framework) remaining relevant. The ramifications of the recent announcements by Microsoft that it would open-source the .NET Framework and take other steps to facilitate cross-platform application deployments alone could fill an article.

The evolution of diverse platforms has not been kind to the traditional incumbents of C# and .NET until very recently. In this article, we will discuss a bit of that history and what has changed, as well as explore the factors and vendors that are making this change possible. Interestingly, almost everyone approached for comment on this topic said something to the effect of “Where do I start?”

So much happening lately makes this a fluid situation, but the three common themes are the open-sourcing of Microsoft technology, Xamarin, and Azure. All of them will be discussed to help understand why C# and .NET may be part of solving the most vexing problem faced by developers these past few years: how to address multiple platforms without going broke, crazy or both.

Many have wondered aloud why Microsoft has not solved this problem. Well, what Microsoft has been doing is not only allowing for a solution or solutions to manifest, but they have also been making some very targeted moves to help them manifest.

Microsoft’s .NET languages
When it first launched .NET, Microsoft put forth two languages. The new C# appealed to developers with C, C++ and Java experience because the syntax was familiar. The other option is the updated Visual Basic in the form of Visual Basic.NET (VB.NET). The power and versatility of the .NET platform is available to both in the form of a Base Class Library that offers a rich set of classes that facilitate platform integration.

At many points in the history of .NET there has been relative parity between the languages. Given my own history as a Visual Basic developer, there have been many arguments about how both languages are equal and how either is just as viable a choice as the other, but you will not hear these arguments much anymore. The reality on the ground is that Visual Basic.NET has been relegated to also-ran status, with the vast majority of sample applications, course examples and virtually everything else being much better supported in C# (if they are supported at all in VB.NET).

This is not to say that Microsoft has watered down or abandoned VB.NET. Its lagging has been more the result of outside factors. For example, most of the developers who work for Microsoft have traditionally been C++ or even Java programmers. This is also the case with most independent software vendors, and it helps explain why so many more software packages implemented with .NET are written in C# than in VB.NET.