OiiPDF.com

ASP.NET Core Recipes, 2nd Edition

Title ASP.NET Core Recipes, 2nd Edition
Author John Ciliberti
Sub Title A Problem-Solution Approach
ISBN 148420428X
Year 2017
Pages 431
File Formate PDF
Tags ASP.NET

Book Description

ASP.NET Core Recipes is a practical guide for developers creating modern web applications, cutting through the complexities of ASP.NET, jQuery, React, and HTML5 to provide straightforward solutions to common web development problems using proven methods based on best practices. The problem-solution approach gets you in, out, and back to work quickly while deepening your understanding of the underlying platform and how to develop with it.
Author John Ciliberti guides you through the MVC framework and development tools, presenting typical challenges, along with code solutions and clear, concise explanations, to accelerate application development. Solve problems immediately by pasting in code from the recipes, or put multiple recipe solutions together to overcome challenging development obstacles.
Web developers of all skill levels who are looking for a programming reference for ASP.NET Core MVC and would like to gain an understanding of the inner workings of the platform. In addition, parts of this book provide guidance to developers familiar with ASP.NET Web Forms who would like to update their skill set to include Core MVC.

Table Of Content

  • Contents at a Glance
  • Contents
  • About the Author
  • About the Technical Reviewer
  • Acknowledgments
  • Introduction
  • Chapter 1: ASP.NET Core MVC Fundamentals
    • 1-1. Understanding the Microsoft Web Development Ecosystem
    • Problem
    • Solution
    • How It Works
    • Microsoft Application Hosting Platforms
    • Microsoft Web Development Platforms and Frameworks
    • First-Generation Active Server Pages
    • ASP.NET Web Forms
    • ASP.NET MVC
    • ASP.NET Web API
    • ASP.NET Web Pages
    • ASP.NET SignalR
    • LightSwitch
    • Silverlight
    • SharePoint
    • ASP.NET Core MVC
    • Microsoft Web Development Tools
    • Understanding the Variations of the Microsoft .NET Framework
    • 1-2. Understanding the MVC Pattern
    • Problem
    • Solution
    • How It Works
    • Benefits of the MVC Design Pattern
    • Other Technologies That Use the MVC Pattern
    • 1-3. Understanding the Differences Between MVC, MVVM, and MVP
    • Problem
    • Solution
    • How It Works
    • The MVC Pattern
    • The MVP Pattern
    • The MVVM Pattern
    • 1-4. Discovering the Features of ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • Performance
    • Deployment
    • Consolidation
    • Namespace Changes
    • Compilation Services
    • New Functionality
    • POCO Controllers
    • View Components
    • Tag Helpers
    • New Configuration System
    • Missing Features
    • 1-5. Understanding the Architecture of ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • ASP.NET Core
    • Hosting: Native Process
    • Runtime: CLR Native Host
    • Runtime: Managed Entry Point
    • Runtime: Application Host
    • Runtime: Roslyn Loader
    • .NET Core and ASP.NET Core
    • The ASP.NET MVC Request Processing Pipeline
    • 1-6. Understanding Models in ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • Creating Simple Classes
    • Creating Composite Models
    • Using the Entity Framework
    • 1-7. Understanding Controllers and Actions in ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • Other Types of Action Results
    • 1-8. Understanding Page Routing in ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • 1-9. Understanding View Engines in ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
  • Chapter 2: Getting Started with ASP.NET Core MVC
    • 2-1. Setting Up Your Development Environment
    • Problem
    • Solution
    • How It Works
    • PC Configuration
    • Touch Screens
    • Displays
    • Mouse and Keyboard
    • Getting Visual Studio Community Edition
    • Visual Studio Extensions
    • Other Software
    • Web Browser Add-Ins
    • Telerik Fiddler
    • SOAP UI
    • Business Justification for Adequate Developer Hardware
    • 2-2. Determining Which Operating System to Use for Your Development Machine
    • Problem
    • Solution
    • How It Works
    • Enterprise Deployment Environments
    • Continuous Integration and Deployment
    • 2-3. Creating a New ASP.NET Core MVC Application Using Visual Studio 2017
    • Problem
    • Solution
    • How It Works
    • 2-4. Creating a New ASP.NET Core MVC Application Using dotnet.exe
    • Problem
    • Solution
    • How It Works
    • Understanding the Options for dotnet new
    • Creating a Project Using the Web Template
    • 2-5. Understanding the Structure of an ASP.NET Core MVC Project
    • Problem
    • Solution
    • How It Works
    • bin
    • Controllers
    • Data
    • Models
    • obj
    • Services
    • Views
    • _ViewImports.cshtml
    • _ViewStart.cshtml
    • .bowerrc
    • appsettings.json
    • bower.json
    • bundleconfig.json
    • Program.cs
    • Startup.cs
    • 2-6. Using Visual Studio’s Debugging Windows to Debug an ASP.NET Core MVC Application
    • Problem
    • Solution
    • How It Works
    • 2-7. Setting a Conditional Breakpoint in an ASP.NET Core MVC Controller
    • Problem
    • Solution
    • How It Works
    • Conditional Expressions
    • Counters
    • Filters
    • 2-8. Testing Your ASP.NET Core MVC Application Across Many Browsers at the Same Time
    • Problem
    • Solution
    • How It Works
    • Enabling Multiple Default Browsers
    • Trying It
    • 2-9. Editing Your Views and Layouts from Inside Internet Explorer
    • Problem
    • Solution
    • How It Works
    • Installing Web Essentials
    • Editing a Web Page in the Browser
  • Chapter 3: MVC Razor Syntax and HTML Helpers
    • 3-1. Understanding Razor Syntax
    • Problem
    • Solution
    • How It Works
    • Variables
    • Displaying Model Data
    • Control Statements
    • Loops
    • HTML Helpers
    • Code Blocks
    • Explicit Markup
    • Comments
    • Escaping the @ Symbol
    • 3-2. Creating an Action Link
    • Problem
    • Solution
    • How It Works
    • _htmlGenerator.GenerateActionLink
    • UrlHelper Action
    • 3-3. Creating an Action Link to Another Controller
    • Problem
    • Solution
    • How It Works
    • 3-4. Creating an Action Link to Another Area
    • Problem
    • Solution
    • How It Works
    • 3-5. Creating an Action Link with Custom HTML Attributes
    • Problem
    • Solution
    • How It Works
    • 3-6. Creating an Action Link That Uses HTTPS
    • Problem
    • Solution
    • How It Works
    • 3-7. Creating Your Own Action Link for Creating HTTPS Links
    • Problem
    • Solution
    • How It Works
    • SslActionLink
    • 3-8. Creating an Action Link with an Anchor Target
    • Problem
    • Solution
    • How It Works
    • 3-9. Creating an Image Link
    • Problem
    • Solution
    • How It Works
    • 3-10. Creating an Image Link Using a Bootstrap Glyphicon
    • Problem
    • Solution
    • How It Works
    • 3-11. Using HTML Helpers to Create HTML Form Elements
    • Problem
    • Solution
    • How It Works
    • BeginForm and the @using Statement
    • HtmlHelper.Label
    • HtmlHelper.TextBox
    • 3-12. Using Strongly Typed HTML Helpers
    • Problem
    • Solution
    • How It Works
    • 3-13. Using Templated HTML Helpers
    • Problem
    • Solution
    • How It Works
    • 3-14. Creating an Inline Function in a Razor View
    • Problem
    • Solution
    • How It Works
  • Chapter 4: Using Tag Helpers
    • 4-1. Understanding Tag Helpers
    • Problem
    • Solution
    • How It Works
    • The Life Cycle of a Tag Helper
    • 4-2. Creating Hyperlinks with the Anchor Tag Helper
    • Problem
    • Solution
    • How It Works
    • Creating a Link to an Action in the Same Controller
    • Creating a Link to an Action in Another Controller
    • Creating a Link to an Action That Includes a Route Parameter
    • Creating a Link to an Action in an Area
    • Creating an Action Link with SSL
    • Creating an Action Link with an Anchor Target
    • 4-3. Building a Form Using the Form, Label, and Input Tag Helpers
    • Problem
    • Solution
    • How It Works
    • The Model
    • The Controller
    • The Views
    • 4-4. Data Binding a Nullable bool to an Option Tag Helper
    • Problem
    • Solution
    • How It Works
    • The Model
    • The Controller
    • The View
    • 4-5. Creating a Drop-Down List with the Select Tag Helper
    • Problem
    • Solution
    • How It Works
    • The Model
    • The Controller
    • The View
    • 4-6. Validating Input with Tag Helpers
    • Problem
    • Solution
    • How It Works
    • The Model
    • The Controller
    • The View
    • Enhancing the User Experience with CSS
    • 4-7. Improving Performance with the Cache Tag Helper
    • Problem
    • Solution
    • How It Works
    • Configuring the Project to Connect to a Database
    • Adding the Shared.DataAccess NuGet Package
    • Adding the ConnString.json File
    • Registering Shared.DataAccess with ASP.NET Core’s Dependency Injection System
    • Creating the View Component
    • Creating the View for the View Component
    • The ViewComponent View
    • The Model
    • The Controller
    • The View
    • 4-8. Using the Environment, Script, and Link Tag Helpers for Conditionally Rendering Script and Link Tags
    • Problem
    • Solution
    • How It Works
    • Using the Environment Tag Helper
    • Using the Fallback Feature for JavaScript Files
    • 4-9. Creating a Custom Tag Helper
    • Problem
    • Solution
    • How It Works
    • Project Setup
    • Adding Required Dependencies to the TagHelpers Project
    • Creating the Tag Helper
    • Adding the Custom Tag Helper to Your ASP.NET Core MVC Project
  • Chapter 5: Getting the Most from the New Features in ASP.NET Core MVC
    • 5-1. Understanding NuGet with ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • NuGet Package Sources
    • Adding a Custom NuGet Feed to Visual Studio
    • Using a NuGet Config File
    • Changing the Global NuGet Settings from Visual Studio
    • Adding a NuGet Package to Your Project
    • Examining the .csproj File
    • Adding a Package Using the Package Manager Console
    • Adding a Package Using the NuGet Package Manager UI in Visual Studio
    • 5-2. Upgrading from ASP.NET MVC 5 to ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • Creating the ASP.NET MVC 5 Project to Be Migrated
    • Creating the New ASP.NET Core MVC Project
    • Import Project Files from the ASP.NET MVC Project
    • Correcting the Errors
    • JavaScript and CSS Libraries
    • Adding Moment.js to the ASP.NET MVC Project
    • Adding Moment.js to the ASP.NET Core MVC Project
    • 5-3. Upgrading from Web API to ASP.NET MVC 6
    • Problem
    • Solution
    • How It Works
    • Creating an ASP.NET Web API 2 Project
    • Creating a New ASP.NET Core MVC (.NET Framework) Project
    • Enabling the Web API Shim
    • Importing the Controller and Adding the Required using Statements
    • Using Request.CreateResponse with the Web API Compatibility Shim
    • Converting Your Web API Controller to the ASP.NET Core MVC Without the Compatibility Shim
    • Creating the ASP.NET Core Web Application (.NET Core)
    • Porting CellPhone Controller to ASP.NET MVC Core
    • 5-4. Creating a Tag Cloud Using a View Component
    • Problem
    • Solution
    • How It Works
    • Creating the Project
    • Creating the CSS Classes
    • Creating the Tag Cloud Model
    • Creating the Tag Cloud View Component
    • Adding the Component Views
    • Using the View Component in a View
    • 5-5. Using the Inject Feature to Implement a Hit Counter
    • Problem
    • Solution
    • How It Works
    • Creating the Project
    • Creating the Hit Counter Service Class
    • Registering the Interface with the Dependency Injection System
    • Using the Class in a View
  • Chapter 6: Solution Design Using ASP.NET Core MVC
    • 6-1. Developing Reference Architectures for ASP.NET Core MVC Applications
    • Problem
    • Solution
    • How It Works
    • Application Design Factors
    • Scope and Schedule
    • Audience and Usage Patterns
    • Scalability
    • Reliability
    • Security
    • Reference Architectures
    • Small Internet-Facing Applications
    • Large Internet-Facing Application
    • Other Deployment Scenarios
    • 6-2. Designing Your ASP.NET Core MVC Project for the Cloud
    • Problem
    • Solution
    • 6-3. Deploying an ASP.NET Core MVC Application in a Docker Container
    • Problem
    • Solution
    • Containerizing an ASP.NET Core MVC Application
    • How It Works
    • Creating a Shared Drive
    • Creating an ASP.NET Core MVC Project with Docker Support
    • Running and Debugging the Application in the Container
    • 6-4. Creating a Data Access Layer Using Entity Framework Core Code First
    • Problem
    • Solution
    • How It Works
    • Creating the Solution
    • Adding Entity Framework Core NuGet Packages
    • Creating the Model Classes
    • Creating the DbContext
    • Using the Fluent API to Specify Database Mapping Details
    • Setting the Connection String Using a Configuration File
    • Adding a Reference to the Data Access Project to the Web Project
    • Adding a Startup Class to the Recipe04.DataAccess Project
    • Database Migrations
    • Creating Your First Migration
    • Running the Migration
    • Backing Out a Migration
    • Promoting the Changes to Production
    • Modifying the Startup So the Web Application Can Use Your DbContext
    • 6-5. Creating a Data Access Layer Using Entity Framework Core Code First from an Existing Database
    • Problem
    • Solution
    • How It Works
    • Creating the Solution
    • Creating the Sample Database
    • Reverse Engineering Your Database
    • 6-6. Using the Repository and Unit of Work Patterns in Your Data Access Layer
    • Problem
    • Solution
    • How It Works
    • The IUnitOfWork Interface
    • The Generic Repository
    • Creating Repository Classes That Derive from the Generic Repository
    • The UnitOfWork Implementation
    • Passing a Connection String to MoBContext and Using It to Initialize the Database Connection
    • Consuming the UnitOfWork Class in an ASP.NET MVC Core Application
    • 6-7. Using the Options Pattern to Simplify Configuration of Your ASP.NET Core MVC Application
    • Problem
    • Solution
    • How It Works
    • Creating the Project
    • Installing MailKit from Nuget
    • Creating the EmailSenderOptions Class
    • Modifying MessageService to Use EmailSenderOptions
    • Setting Up the Configuration
    • Adding Settings to User Secrets
    • Loading the Configuration in Startup.cs
    • Using Environment Variables in Production
    • 6-8. Using Areas to Organize a Large ASP.MVC Project
    • Problem
    • Solution
    • How It Works
    • Creating the Project
    • Creating a New Area
    • Adding Controllers to an Area
  • Chapter 7: Test-Driven Development with ASP.NET Core MVC
    • 7-1. Adding an xUnit Test Project to an ASP.NET Core Web Application Solution
    • Problem
    • Solution
    • How It Works
    • Creating the Solution and Web Application Project
    • Creating the Test Project from Visual Studio
    • Creating the Test Project from the Command Line
    • Running the Test Project for the First Time
    • Exploring the Test Project
    • Adding the Test Project to the Solution
    • Adding Chapter07.Web as a Reference to Chapter07.Test
    • 7-2. Creating Unit Tests for a Controller
    • Problem
    • Solution
    • How It Works
    • Modifying HomeController for Testability
    • Creating Tests for HomeController
    • Running the Tests for HomeController
    • 7-3. Understanding Test-Driven Development Strategies
    • Problem
    • Solution
    • How It Works
    • The Requirements
    • Creating the Design
    • Adding the Test Class
    • Creating the Controller
    • Implementing the First Test
    • 7-4. Simulating Calls to External Dependencies Using Moq
    • Problem
    • Solution
    • Separating the Interface from Implementation
    • Mocking
    • Inversion of Control and Dependency Injection
    • How It Works
    • Adding a Reference to the Data Access Library
    • Modifying ArtistAdminController
    • Adding Moq to the Test Project
    • Updating ListAction_ReturnsListView to Use Moq
    • Verifying the Model Is the Correct Type
    • Using Moq to Simulate Data Returned from the Data Access Layer
    • Testing for a Condition When No Data Is Found
    • Using Moq to Test for a Back-End Database Failure
    • 7-5. Using the Inversion of Control and Constructor Injection Patterns with ASP.NET Core MVC
    • Problem
    • Solution
    • How It Works
    • Using Constructor Injection
    • Registering Types with the ASP.NET Core IoC Container
    • Implementing the ArtistAdminController List Action
  • Chapter 8: Moving from Web Forms to ASP.NET Core MVC
    • 8-1. Deciding Between Staying with Web Forms, a Full Rewrite, or Gradual Migration
    • Problem
    • Solution
    • Deciding Between a Gradual Migration and a Full Rewrite
    • Gradual Migration from ASP.NET Web Forms to ASP.NET Core
    • 8-2. Converting a Web Forms Page to MVC
    • Problem
    • Solution
    • How It Works
    • Moving to ASP.NET Core MVC
    • 8-3. Creating a Custom Tag Helper That Mimics the ASP.NET Data List Control
    • Problem
    • Solution
    • How It Works
    • Creating a Tag Helper to Mimic the Web Forms DataList Control
    • Creating the ColumnList Tag Helper
    • Adding Properties to the Tag Helper
    • Validating the Properties of the Tag Helper
    • Setting Up the Tag Helper to Execute View Components
    • Adding the Rending Logic
    • Using the ColumnsList Tag Helper
    • Creating the ArtistCard View Component
    • Making the Custom Tag Helpers Visible to the Views
    • Adding the Controller Logic
    • Using the ColumnList Tag Helper in a View
    • 8-4. Creating a Data Grid with Paging, Sorting, and Filtering Support
    • Problem
    • Solution
    • How It Works
    • Features of the Web Forms GridView Control
    • Features of the ASP.NET Core MVC Grid View
    • Performance Considerations for Working with Large Data Sets
    • The Data Access Code
    • Creating the Model
    • Creating the Controller
    • Creating the View
    • Creating the Numeric Pager
    • Making Friendly URLs for Paging and Sorting
    • 8-5. Creating a Data Grid That Allows Inline Editing
    • Problem
    • Solution
    • How It Works
    • The HTML Helpers
    • The Model
    • The Controller
    • The View
  • Chapter 9: Data Validation Using ASP.NET Core MVC
    • 9-1. Validating Form Data Using Data Annotations
    • Problem
    • Solution
    • How It Works
    • Create the Visual Studio Project
    • Creating the View Model
    • Scaffolding the Controller
    • Scaffolding the View
    • 9-2. Creating a Custom Validation Attribute
    • Problem
    • Solution
    • How It Works
    • Creating the Model
    • Creating the Custom Validation Attribute
    • Overriding IsValid
    • Updating the Home Controller
    • Updating the Index View
    • Adding Client-Side Validation
    • Adding the JavaScript
    • Registering the Validation Method with jQuery Validation
    • Registering the Adapter with jQuery Unobtrusive Validation
    • Adding the Script to the View Page
    • 9-3. Processing Custom Business Rules on an Entity by Implementing IValidatableObject
    • Problem
    • Solution
    • How It Works
    • Creating the Project
    • Creating the Model
    • Updating the Home Controller
    • Updating the Index View
    • 9-4. Using Remote Validation
    • Problem
    • Solution
    • How It Works
    • Creating the Project
    • Creating the Model
    • Creating the Web API
    • Modifying the Home Controller
    • Creating the View
    • 9-5. Creating Complex Validation Rules Using Fluent Validation
    • Problem
    • Solution
    • How It Works
    • Creating the Project
    • Creating the Models
    • Installing the Fluent Validation NuGet Package
    • Creating the Validation Rules
    • Creating the View Model
    • Creating a Generic SelectListItem Adapter
    • Simulating an Inventory Module
    • Creating the GuitarBuilderViewModel Class
    • Creating the GuitarBuilderToGuitarAdapter Class
    • Creating the Controller
    • Creating the Views and Testing the Application
  • Chapter 10: Securing Your ASP.NET Core MVC Application
    • 10-1. Creating an ASP.NET Core Web Site That Uses ASP.NET Identity Core for Authentication and Authorization
    • Problem
    • Solution
    • How It Works
    • Creating the Visual Studio Project
    • Exploring the Project
    • NuGet Packages
    • Controllers and Views
    • Data
    • Models
    • IdentityUser Support for Different Data Types
    • Properties of IdentityUser
    • Services
    • appsettings.json
    • Creating the Database Schema
    • How the Apply Migrations Button Works
    • Exploring the Application
    • Exploring the Database
    • 10-2. Adding Custom Fields to the ApplicationUser Class
    • Problem
    • Solution
    • How It Works
    • 10-3. Allowing Users to Log In to Your ASP.NET Core Application Using Facebook
    • Problem
    • Solution
    • How It Works
    • Creating a Facebook Application
    • Adding the App ID and App Secret to the User Secrets Store
    • Adding the Microsoft.AspNetCore.Authentication.Facebook NuGet Package
    • Adding the Facebook Authentication Middleware to Startup.cs
    • 10-4. Enabling Two-Factor Authorization in Your ASP.NET Core Application
    • Problem
    • Solution
    • How It Works
    • Setting Up a Twilio Account
    • Adding the Twilio Configuration to the User Secrets Store
    • Installing the Twilio NuGet Package
    • Creating a Configuration Class
    • Implementing the ISmsSender API Using Twilio
    • Wiring Up the Configuration in Startup
    • Uncommenting the Code in Views/Manage/Index.cshtml
  • Chapter 11: Creating Modern User Experiences Using React.js and ASP.NET Core
    • 11-1. Understanding node.js and Bower Integration in the ASP.NET Core Project System
    • Problem
    • Solution
    • How It Works
    • Node.js
    • NPM
    • Bower
    • Bower Depreciated
    • BuildBundlerMinifier NuGet Package
    • 11-2. Customizing the JavaScript Build Workflow in an ASP.NET Core Project
    • Problem
    • Solution
    • How It Works
    • Changing the Bower Configuration
    • Adding Gulp to the Project and Automatically Running Tasks When the Project Is Built
    • 11-3. Adding React to an ASP.NET Core Application
    • Problem
    • Solution
    • How It Works
    • Why React
    • Installing the Required Software
    • Creating the React Single-Page Application Using create-react-app
    • Opening the React Project in Visual Studio
    • Starting the React Development Server
    • Integrating the React Application with Your ASP.NET Core MVC Project
    • Building the React App
    • Copying the Contents of the React Build Folder to the ASP.NET Core Project
    • 11-4. Understanding React, JSX, ES6, Babel, and Webpack
    • Problem
    • Solution
    • How It Works
    • ES6
    • Module System
    • export and export default
    • import
    • Classes
    • Variable Scoping with let and const
    • Arrow Functions
    • React and JSX
    • Webpack
    • Babel
    • 11-5. Adding Unit Testing and Static Code Analysis to a React Project
    • Problem
    • Solution
    • How It Works
    • ESLint Configuration
    • Adding Linting Rules for Jest Unit Tests
    • Types of Tests for Front-End Applications
    • Unit Tests
    • Snapshot Tests
    • DOM Tests
    • 11-6. Creating an SPA Using ASP.NET Core and React
    • Problem
    • Solution
    • How It Works
    • Creating the HTML Mock-Up of Your React SPA
    • Creating React Components from the Mock-Up and Associated Unit Tests
    • Stubbing Out the Components and Associated Tests
    • Implementing the “ArtistProfileContainer Renders without crashing” Test
    • Verifying That ArtistProfileContainer Contains the Expected Children
    • Stubbing Out Tests for the Rest of the Components
    • Adding the CSS
    • Adding the Sample Images
    • Replacing the Hard-Coded Values with Props and State
    • Updating the Child Components to Receive Props
    • Viewing the Component in the Browser
    • Creating a Snapshot Test
    • Creating the Artist Profile Service in the ASP.NET Core Application
    • Creating the Model
    • Creating the API Controller
    • Using the React Development Server’s Proxy Setting to Avoid Cross-Domain Issues
    • Creating the ArtistProfileAPI Class
    • Calling the ArtistProfileApi When the ArtistProfileContainer Is First Loaded
    • Next Steps
  • Appendix
    • A-1. Installing SQL Server 2016 Developer
    • Downloading Microsoft SQL Server 2016 Developer
    • Installing Microsoft SQL Server 2016 Developer
    • Installing SQL Server Management Tools
    • A-2. Downloading and Installing the Sample Database
    • Downloading the Database Backup File
    • Restoring the Database Backup Using SSMS
    • A-3. Adding ASP.NET Core Recipe’s NuGet Repository to Visual Studio
    • A-4. Installing Git
    • A-5. Cloning the ASP.NET Core Recipes Git Repository
    • Checking for Updates
    • Reporting Issues and Asking Questions
  • Index