Chapter 2. Setting Up the Environment
In any development project, it is vital to set up the right kind of development environment so that you can concentrate on the developing the solution rather than solving environment issues or configuration problems. With respect to .NET, Visual Studio is the defacto standard IDE (Integrated Development Environment) for building web applications in .NET.
In this chapter, you'll be learning about the following topics:
- Purpose of IDE
- Different offerings of Visual Studio
- Installation of Visual Studio Community 2015
- Creating your first ASP.NET MVC 5 project and project structure
Purpose of IDE
First of all, let us see why we need an IDE, when you can type the code in Notepad, compile it, and execute it.
When you develop a web application, you might need the following things to be productive:
- Code editor: This is the text editor where you type your code. Your code editor should be able to recognize different constructs such as the
if
condition,for
loop of your programming language. In Visual Studio, all of your keywords would be highlighted in blue color. - Intellisense: Intellisense is a context aware code-completion feature available in most modern IDEs including Visual Studio. One such example is when you type a dot after an object; this Intellisense feature lists out all the methods available on the object. This helps the developers to write code faster and easier.
- Build/Publish: It would be helpful if you could build or publish the application using a single click or single command. Visual Studio provides several options out-of-the-box to build a separate project or to build the complete solution in a single click. This makes the build and deployment of your application easier.
- Templates: Depending on the type of the application, you might have to create different folders and files along with the boilerplate code. So, it'll be very helpful if your IDE supports the creation of different kinds of template. Visual Studio generates different kinds of templates with the code for ASP.NET Web Forms, MVC, and Web API to get you up-and-running.
- Ease of adding items: Your IDE should allow you to add different kinds of items with ease. For example, you should be able to add an XML file without any issues. And if there is any problem with the structure of your XML file, it should be able to highlight the issue and provide information to help you to fix the issues.
Visual Studio offerings
There are different versions of Visual Studio 2015 available to satisfy the various needs of developers/organizations. Primarily, there are four versions of Visual Studio 2015:
- Visual Studio Community
- Visual Studio Professional
- Visual Studio Enterprise
- Visual Studio Test Professional
System requirements
Visual Studio can be installed on computers running Windows 7 Service Pack 1 operating system and above. You can get to know the complete list of requirements from the following URL:
https://www.visualstudio.com/en-us/downloads/visual-studio-2015-system-requirements-vs.aspx
Visual Studio Community 2015
This is a fully featured IDE available for building desktops, web applications, and cloud services. It is available free of cost for individual users.
You can download Visual Studio Community from the following URL:
https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
Throughout this book, we will be using the Visual Studio Community version for development as it is available free of cost to individual developers.
Visual Studio Professional
As the name implies, Visual Studio Professional is targeted at professional developers and contains features such as Code Lens for improving your team's productivity. It also has features for greater collaboration within the team.
Visual Studio Enterprise
Visual Studio Enterprise is the full-blown version of Visual Studio with a complete set of features for collaboration, including a team foundation server, modeling, and testing.
Visual Studio Test Professional
Visual Studio Test Professional is primarily aimed for the testing team or people who are involved in the testing, which might include developers. In any software development methodology, either the waterfall model or agile developers need to execute the development suite test cases for the code they are developing.
System requirements
Visual Studio can be installed on computers running Windows 7 Service Pack 1 operating system and above. You can get to know the complete list of requirements from the following URL:
https://www.visualstudio.com/en-us/downloads/visual-studio-2015-system-requirements-vs.aspx
Visual Studio Community 2015
This is a fully featured IDE available for building desktops, web applications, and cloud services. It is available free of cost for individual users.
You can download Visual Studio Community from the following URL:
https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
Throughout this book, we will be using the Visual Studio Community version for development as it is available free of cost to individual developers.
Visual Studio Professional
As the name implies, Visual Studio Professional is targeted at professional developers and contains features such as Code Lens for improving your team's productivity. It also has features for greater collaboration within the team.
Visual Studio Enterprise
Visual Studio Enterprise is the full-blown version of Visual Studio with a complete set of features for collaboration, including a team foundation server, modeling, and testing.
Visual Studio Test Professional
Visual Studio Test Professional is primarily aimed for the testing team or people who are involved in the testing, which might include developers. In any software development methodology, either the waterfall model or agile developers need to execute the development suite test cases for the code they are developing.
Visual Studio Community 2015
This is a fully featured IDE available for building desktops, web applications, and cloud services. It is available free of cost for individual users.
You can download Visual Studio Community from the following URL:
https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
Throughout this book, we will be using the Visual Studio Community version for development as it is available free of cost to individual developers.
Visual Studio Professional
As the name implies, Visual Studio Professional is targeted at professional developers and contains features such as Code Lens for improving your team's productivity. It also has features for greater collaboration within the team.
Visual Studio Enterprise
Visual Studio Enterprise is the full-blown version of Visual Studio with a complete set of features for collaboration, including a team foundation server, modeling, and testing.
Visual Studio Test Professional
Visual Studio Test Professional is primarily aimed for the testing team or people who are involved in the testing, which might include developers. In any software development methodology, either the waterfall model or agile developers need to execute the development suite test cases for the code they are developing.
Visual Studio Professional
As the name implies, Visual Studio Professional is targeted at professional developers and contains features such as Code Lens for improving your team's productivity. It also has features for greater collaboration within the team.
Visual Studio Enterprise
Visual Studio Enterprise is the full-blown version of Visual Studio with a complete set of features for collaboration, including a team foundation server, modeling, and testing.
Visual Studio Test Professional
Visual Studio Test Professional is primarily aimed for the testing team or people who are involved in the testing, which might include developers. In any software development methodology, either the waterfall model or agile developers need to execute the development suite test cases for the code they are developing.
Visual Studio Enterprise
Visual Studio Enterprise is the full-blown version of Visual Studio with a complete set of features for collaboration, including a team foundation server, modeling, and testing.
Visual Studio Test Professional
Visual Studio Test Professional is primarily aimed for the testing team or people who are involved in the testing, which might include developers. In any software development methodology, either the waterfall model or agile developers need to execute the development suite test cases for the code they are developing.
Visual Studio Test Professional
Visual Studio Test Professional is primarily aimed for the testing team or people who are involved in the testing, which might include developers. In any software development methodology, either the waterfall model or agile developers need to execute the development suite test cases for the code they are developing.
Installing Visual Studio Community
Follow the given steps to install Visual Studio Community 2015:
- Visit the following link to download Visual Studio Community 2015:
https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
- Click on the Download Community 2015 button. Save the file in a folder where you can retrieve it easily later:
- Run the downloaded executable file:
- Click on Run and the following screen will appear:
There are two types of installation—default and custom installation. The default installation installs the most commonly used features and this will cover most developer use cases of the developer. Custom installation helps you to customize the components that you want to install:
- Click on the Install button after selecting the installation type.
- Depending on your memory and processor speed, the installation will take 1 to 2 hours to install.
- Once all the components are installed, you will see the following Setup Completed screen:
Installing ASP.NET 5
When we install the Visual Studio Community 2015 edition, ASP.NET 5 will be installed by default. As the ASP.NET Core application runs on top of ASP.NET 5, we need to install ASP.NET 5. There are a couple of ways to install ASP.NET 5:
- Get ASP.NET 5 from https://get.asp.net/
- Another option is to install from the New Project template in Visual Studio
This option is a bit easier as you don't need to search and install.
The following are the detailed steps:
- Create a new project by selecting File | New | Project or using the shortcut Ctrl + Shift + N:
- Select ASP.NET Web Application and enter the project name and click on OK:
- The following window will appear to select a template. Select the Get ASP.NET 5 RC option as shown in the following screenshot:
- When you click on OK in the preceding screen, the following window will appear:
- When you click on the Run or Save button in the preceding dialog, you will get the following screen asking for ASP.NET 5 Setup. Select the checkbox, I agree to the license terms and conditions and click on the Install button:
- Installing of ASP.NET 5 might take a couple of hours. Once it is completed you'll get the following screen:
During the process of installing ASP.NET 5 RC1 Update 1, it might ask you to close the Visual Studio. If asked, please do so.
Project structure in ASP.NET 5 application
Once ASP.NET 5 RC1 is successfully installed, open the Visual Studio, create a new project and select the ASP.NET 5 Web Application as shown in the following screenshot:
A new project will be created and the structure will be like following:
File-based project
Whenever you add a file or folder in your file system (inside the ASP.NET 5 project folder), the changes will be automatically reflected in your application.
Support for full .NET and .NET core
You might have noticed a couple of references in the preceding project: DNX 4.5.1 and DNX Core 5.0. DNX 4.5.1 provides functionalities of full-blown .NET whereas DNX Core 5.0 supports only the core functionalities, which would be used if you are deploying the application across cross-platforms such as Apple OS X, Linux. The development and deployment of an ASP.NET Core application on a Linux machine will be explained in a later chapter.
The Project.json package
Usually, in an ASP.NET web application, we would have the assemblies as references and the list of references in a C# project file. But in an ASP.NET 5 application, we have a JSON file by name Project.json
, which will contain all the necessary configurations with all its .NET dependencies in the form of NuGet
packages. This makes dependency management easier. NuGet
is a package manager, provided by Microsoft, which makes package installation and uninstallation easier. Prior to NuGet
, all dependencies had to be installed manually. The dependencies section identifies the list of dependent packages available for the application. The frameworks section informs us about frameworks, supported by the application. The scripts section identifies the script to be executed during the build process of the application. Include and exclude properties can be used in any section to include or exclude any item.
Controllers
This folder contains all of your controller files. Controllers are responsible for handling requests, communicating models, and generating the views.
Models
All of your classes representing domain data will be present in this folder.
Views
Views are files that contain your frontend components and are presented to the end users of the application. This folder contains all of your Razor View files.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
File-based project
Whenever you add a file or folder in your file system (inside the ASP.NET 5 project folder), the changes will be automatically reflected in your application.
Support for full .NET and .NET core
You might have noticed a couple of references in the preceding project: DNX 4.5.1 and DNX Core 5.0. DNX 4.5.1 provides functionalities of full-blown .NET whereas DNX Core 5.0 supports only the core functionalities, which would be used if you are deploying the application across cross-platforms such as Apple OS X, Linux. The development and deployment of an ASP.NET Core application on a Linux machine will be explained in a later chapter.
The Project.json package
Usually, in an ASP.NET web application, we would have the assemblies as references and the list of references in a C# project file. But in an ASP.NET 5 application, we have a JSON file by name Project.json
, which will contain all the necessary configurations with all its .NET dependencies in the form of NuGet
packages. This makes dependency management easier. NuGet
is a package manager, provided by Microsoft, which makes package installation and uninstallation easier. Prior to NuGet
, all dependencies had to be installed manually. The dependencies section identifies the list of dependent packages available for the application. The frameworks section informs us about frameworks, supported by the application. The scripts section identifies the script to be executed during the build process of the application. Include and exclude properties can be used in any section to include or exclude any item.
Controllers
This folder contains all of your controller files. Controllers are responsible for handling requests, communicating models, and generating the views.
Models
All of your classes representing domain data will be present in this folder.
Views
Views are files that contain your frontend components and are presented to the end users of the application. This folder contains all of your Razor View files.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
Support for full .NET and .NET core
You might have noticed a couple of references in the preceding project: DNX 4.5.1 and DNX Core 5.0. DNX 4.5.1 provides functionalities of full-blown .NET whereas DNX Core 5.0 supports only the core functionalities, which would be used if you are deploying the application across cross-platforms such as Apple OS X, Linux. The development and deployment of an ASP.NET Core application on a Linux machine will be explained in a later chapter.
The Project.json package
Usually, in an ASP.NET web application, we would have the assemblies as references and the list of references in a C# project file. But in an ASP.NET 5 application, we have a JSON file by name Project.json
, which will contain all the necessary configurations with all its .NET dependencies in the form of NuGet
packages. This makes dependency management easier. NuGet
is a package manager, provided by Microsoft, which makes package installation and uninstallation easier. Prior to NuGet
, all dependencies had to be installed manually. The dependencies section identifies the list of dependent packages available for the application. The frameworks section informs us about frameworks, supported by the application. The scripts section identifies the script to be executed during the build process of the application. Include and exclude properties can be used in any section to include or exclude any item.
Controllers
This folder contains all of your controller files. Controllers are responsible for handling requests, communicating models, and generating the views.
Models
All of your classes representing domain data will be present in this folder.
Views
Views are files that contain your frontend components and are presented to the end users of the application. This folder contains all of your Razor View files.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
The Project.json package
Usually, in an ASP.NET web application, we would have the assemblies as references and the list of references in a C# project file. But in an ASP.NET 5 application, we have a JSON file by name Project.json
, which will contain all the necessary configurations with all its .NET dependencies in the form of NuGet
packages. This makes dependency management easier. NuGet
is a package manager, provided by Microsoft, which makes package installation and uninstallation easier. Prior to NuGet
, all dependencies had to be installed manually. The dependencies section identifies the list of dependent packages available for the application. The frameworks section informs us about frameworks, supported by the application. The scripts section identifies the script to be executed during the build process of the application. Include and exclude properties can be used in any section to include or exclude any item.
Controllers
This folder contains all of your controller files. Controllers are responsible for handling requests, communicating models, and generating the views.
Models
All of your classes representing domain data will be present in this folder.
Views
Views are files that contain your frontend components and are presented to the end users of the application. This folder contains all of your Razor View files.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
Controllers
This folder contains all of your controller files. Controllers are responsible for handling requests, communicating models, and generating the views.
Models
All of your classes representing domain data will be present in this folder.
Views
Views are files that contain your frontend components and are presented to the end users of the application. This folder contains all of your Razor View files.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
Models
All of your classes representing domain data will be present in this folder.
Views
Views are files that contain your frontend components and are presented to the end users of the application. This folder contains all of your Razor View files.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
Views
Views are files that contain your frontend components and are presented to the end users of the application. This folder contains all of your Razor View files.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
Migrations
Any database-related migrations will be available in this folder. Database migrations are the C# files which contain the history of any database changes done through an Entity Framework (an ORM framework). This will be explained in detail in a later chapter.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
The wwwroot folder
This folder acts as a root folder and it is the ideal container to place all of your static files such as CSS and JavaScript files. All the files which are placed in wwwroot
folder can be directly accessed from the path without going through the controller.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
Other files
The appsettings.json
file is the config file where you can configure application level settings. Bower, npm (Node Package Manager), and gulpfile.js are client-side technologies, supported by ASP.NET 5 applications.
Summary
In this chapter, you learned about the offerings in Visual Studio. Step-by-step instructions are provided for installing the Visual Studio Community version, freely available for individual developers. We have also discussed the new project structure of the ASP.NET 5 application and the changes when compared to the previous versions.
In the next chapter, we are going to discuss the controllers and their roles and functionalities. We'll also build a controller and associated action methods and see how they work.