Home > Store

ASP.NET Core in 24 Hours, Sams Teach Yourself, Rough Cuts

ASP.NET Core in 24 Hours, Sams Teach Yourself, Rough Cuts

Rough Cuts

  • Available to Safari Subscribers
  • About Rough Cuts
  • Rough Cuts are manuscripts that are developed but not yet published, available through Safari. Rough Cuts provide you access to the very latest information on a given topic and offer you the opportunity to interact with the author to influence the final publication.

Also available in other formats.

Description

  • Copyright 2017
  • Dimensions: 7" x 9-1/8"
  • Pages: 384
  • Edition: 1st
  • Rough Cuts
  • ISBN-10: 0-13-439234-5
  • ISBN-13: 978-0-13-439234-9

This is for the Rough Cuts version.


When ASP.NET first shipped as part of the.NET Framework in 2002, it was designed to make it easy for developers used to writing desktop applications to build Web applications with ASP.NET Web Forms. As the Web evolved, new frameworks were added to ASP.NET, including MVC in 2008, Web Pages in 2010, and Web API and SignalR in 2012.


This version of ASP.NET is a huge departure from its predecessors.  Microsoft has rewritten ASP.NET from the ground up with modern framework techniques.  The goal of this dramatic change is to improve the foundation of ASP.NET and make it cross-platform capable.  The new stack is significantly smaller, lightning quick and open source for the world to review and contribute to.


ASP.NET 5 is a landmark release in many ways. It's full open source from the start, cross-platform and supported on Windows, Mac, and Linux. It includes contributions from the community and is being developed in the open on GitHub. ASP.NET 5 includes lots of great updates as well like TagHelpers, the unification of MVC and Web API, the componentization of the .NET Framework, dependency injection built in, an all-new project system, and deep client-side tooling for things like Bower, Gulp, and Grunt. This is an exciting time for the Microsoft web platform!


Sample Content

Table of Contents

Introduction 1
HOUR 1: Introducing ASP.NET Core 7
    What Is ASP.NET? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
    Why Should You Program in ASP.NET? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
    Significant Changes in ASP.NET Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
    Assumptions and Definitions in This Book . . . . . . . . . . . . . . . . . . . . . . . . . 13
    Introducing the Sample Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
HOUR 2: Setting Up Your Work Environment for ASP.NET Core 17
    Four Versions of Visual Studio: Where Do I Start? . . . . . . . . . . . . . . . . . . . . 17
    Installing Development Tools on Non-Windows Operating Systems . . . . . . . 20
    Introducing the dotnet Command-Line Tool . . . . . . . . . . . . . . . . . . . . . . . 24
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
HOUR 3: Exploring the New Project Templates 31
    Getting Started with Visual Studio 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
    The wwwroot Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
    Getting Started with Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
HOUR 4: Defining ASP.NET Core Configuration 45
    Introducing Our Sample Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
    Getting Started with Server-Side Configuration . . . . . . . . . . . . . . . . . . . . . . 45
    Fundamentals of .NET Application Structure . . . . . . . . . . . . . . . . . . . . . . . 46
    Managing and Referencing NuGet Packages . . . . . . . . . . . . . . . . . . . . . . . 54
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
HOUR 5: Configuring the Service with the Startup Class 61
    Introducing the Startup Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
HOUR 6: Configuring Your Application 75
    Writing Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
HOUR 7: Accessing Your Data with Entity Framework Core 87
    Getting Started with Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
HOUR 8: Introducing the MVC Architecture 105
    Defining the MVC Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
HOUR 9: Building Your First Controller 113
    Reviewing the MVC Folder Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
HOUR 10: Beginning MVC: Writing Your First View 125
    Introducing Razor Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
HOUR 11: Scaffolding User Interfaces 135
    Introducing Scaffolding in Visual Studio 2017 . . . . . . . . . . . . . . . . . . . . . 135
    Investigating the Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
HOUR 12: Writing Data from a Controller 153
    Enhancing Scaffolded Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
    Validating Data in Controller Methods . . . . . . . . . . . . . . . . . . . . . . . . . . 154
    Investigating Controller Interaction Strategies . . . . . . . . . . . . . . . . . . . . . 157
    Preventing Unwanted Cross-site Posting . . . . . . . . . . . . . . . . . . . . . . . . . . 158
    Speeding Up Data Access with Asynchronous Techniques . . . . . . . . . . . . . 159
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
HOUR 13: Writing Web API Methods 165
    In the Old Days of ASP.NET[…] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
    Creating a New Trip with Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
    Updating a Trip with Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
    Deleting a Trip with Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
    Negotiating and Formatting Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
    Trimming the Fat: An API-Only Application . . . . . . . . . . . . . . . . . . . . . . . 177
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
HOUR 14: Introducing Reusable User Interface Components 183
    Introducing Tag Helpers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
    Tag Helpers That Ship with ASP.NET Core . . . . . . . . . . . . . . . . . . . . . . . . 186
    Building Other Reusable Components . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
    Writing Your Own Tag Helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
    Writing a Constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
    Counting the Number of Trips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
    Formatting Your Trips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
    Using Your New Tag Helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
HOUR 15: npm and bower: Client-Side Package Managers 199
    What Are npm and bower? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
    Getting Started with npm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
    Getting Started with bower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
    Automating npm and bower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
    Installing Newer Versions of npm and bower . . . . . . . . . . . . . . . . . . . . . . . 208
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
HOUR 16: Introducing Angular 213
    Getting Started with Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
    Exploring the Default Template Angular Website . . . . . . . . . . . . . . . . . . . 216
    Delivering Content to the Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
    Adding Some Real Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
HOUR 17: Connecting Angular to ASP.NET Core 229
    Connecting the Pieces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
    Connecting to a Running ASP.NET Core Service . . . . . . . . . . . . . . . . . . . . 235
    Combining the Projects: Merging Angular and ASP.NET Core . . . . . . . . . . 240
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
HOUR 18: Routing Angular Requests Around ASP.NET Core 247
    What Is Routing? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
    Generating URLs from ASP.NET Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
    Routing in Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
    Merging Projects: The Final Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
    Debugging and Building Your App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
HOUR 19: Running Angular on the Server 265
    Introducing Angular Universal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
    Migrating Your Application to SpaServices . . . . . . . . . . . . . . . . . . . . . . . . 271
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
HOUR 20: Authenticating Your Users 275
    Starting a New Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
    Configuring Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
    Adding the Registration Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
    Adding the Login and Logout Features. . . . . . . . . . . . . . . . . . . . . . . . . . . 285
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
HOUR 21: Granting Access to Users 291
    Defining Roles, Claims, and Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
    Adding Claims to Your Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
    Adding a Sample Administrator User . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
    Configuring Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
    Defining Security Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
    Enforcing Authorization Policies in Content . . . . . . . . . . . . . . . . . . . . . . . 298
    Creating More Complex Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
HOUR 22: Deploying to Production 303
    What Is This “Production” You Speak Of? . . . . . . . . . . . . . . . . . . . . . . . . 303
    Hosting ASP.NET Core Behind Another Server . . . . . . . . . . . . . . . . . . . . . . 304
    Preparing Production Web Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
    Deploying Your Application to a Windows Server . . . . . . . . . . . . . . . . . . . 305
    Shared and Self-Contained Deployments . . . . . . . . . . . . . . . . . . . . . . . . . 308
    Deploying Your Application to a Linux Server . . . . . . . . . . . . . . . . . . . . . 311
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
HOUR 23: Working with Docker Containers 317
    What Is a Container? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
    Why Use Containers? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
    Installing Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
    Packaging Your Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
    Deploying to Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
HOUR 24: Looking to the Future and .NET Standard 331
    What Is .NET Standard? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
    Building and Using a .NET Standard Library . . . . . . . . . . . . . . . . . . . . . . 334
    Future Updates for ASP.NET Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
    Staying Connected with the ASP.NET Core Community . . . . . . . . . . . . . . . 338
    Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
    Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
    Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
    Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
9780672337666, TOC, 11/27/2017

Updates

Submit Errata

More Information