Identify ASP.NET MVC Assembly Version

The MVC  pattern separates an application into three main parts.

The Model − Collection of classes that are working with the business logic.
The View − It is responsible for the User Interface. It is an HTML format whose extension is .cshtml.
The Controller − Collection of classes that are working data logic and business logic.

Every MVC application contains 3 folders: Controller, View, and Model.


Before C# 8.0 Async Streams Come Out

While C# 8.0 promises a built-in support for async for-each enumerators (known as ‘Async Streams’), the release date still remains unknown. If you don’t want to wait but feel like that would be beneficial for your project, there is an option available right now.

Watch the explanation of Async Streams on Channel 9 with Mads Torgersen


Effective Bundling With ASP.NET MVC

Bundling and minification have been available in ASP.NET MVC for a long time. This blog post focuses on problems people have had with bundling and provides working solutions for those who cannot use bundling in ASP.NET MVC for different reasons. Also, some ideas about more effective bundling are presented here.

Source code available! The solution with ASP.NET MVC web application that contains code given here is available in my GitHub repository: gpeipman/AspNetMvcBundleMinify. All extensions shown here are available in the extensions folder of the AspNetMvcBundleMinify application


Template Method Design Pattern by Example

This pattern falls under behavioral design patterns, and, as the name suggests, it defines the template which can be used further to create something by using it. You can think of it like stencils, you can create designs on a wall or other surface without much effort; you just need to choose the color and apply the paint.
Let’s understand this with an example. We will be implementing a Logger which is capable of logging in multiple places like a database, a file or sending logs in an email. We will start with one simple solution and will refactor it gradually to see how the template method pattern can be useful for us.


How to Close Your Code

We all know about SOLID principles. Every developer knows what are SOLID principles because every developer has to go through an interview process to get a job. Some can explain really well while they’re interviewing
Recently, I was interviewed by a very reputed financial company. They have 4 rounds of interview and of those, 3 rounds asked a question about SOLID principles. They all asked very good interesting questions and it seems they were looking for some specific expertise. I started working there and their code base is awesome. They are not working anywhere near what they asked in an interview. I also found some controller code files has 2-3k lines of code, which is a presentation layer. Though they have very nice onion architecture for the project, I hope whoever worked there all went through that interview process and knows at least a little about SOLID principles. These principles are not just to perform in the interview; we need to apply it in real code. Maybe they have their own reasons for not following them.


5 Uncommon C# Statements/Keywords

After digging around in C#, I found some interesting discoveries. In today’s post, I go over these uncommon C# statements/keywords with some examples.
With C# 8.0 coming soon, I decided to dig into C# and look at some interesting statements and/or keywords developers have forgotten about or don’t use anymore.


Inferred Tuple Names in C# 7.1

Although C# 7.1 doesn’t have many new features, there are still some convenience hacks I like. One of these is inferred tuple names, meaning that we can name tuple members using variable names. It’s not a big change in the language, but it still makes code a little bit cleaner where tuples are used.
New Features in C# 7.1

Switching C# version in Visual Studio
Deep dive to async Main
Inferred tuple names in C# 7.1

In C# 7.0 we had to specify the names of value tuple members like this: