Introduction |
|
xxxi | |
Part I: Integrated Development Environment |
|
|
|
3 | (18) |
|
|
3 | (8) |
|
Installing Visual Studio 2017 |
|
|
3 | (6) |
|
Running Visual Studio 2017 |
|
|
9 | (1) |
|
Is Visual Studio Really Cloud Enabled? |
|
|
9 | (2) |
|
|
11 | (7) |
|
Developing, Building, Debugging, and Deploying Your First Application |
|
|
13 | (5) |
|
|
18 | (3) |
|
Chapter 2 The Solution Explorer, Toolbox, And Properties |
|
|
21 | (30) |
|
|
22 | (16) |
|
|
25 | (1) |
|
|
26 | (12) |
|
|
38 | (5) |
|
|
40 | (2) |
|
|
42 | (1) |
|
|
43 | (6) |
|
Extending the Properties Window |
|
|
45 | (4) |
|
|
49 | (2) |
|
Chapter 3 Options And Customizations |
|
|
51 | (26) |
|
|
52 | (1) |
|
Customizing the Start Page |
|
|
53 | (1) |
|
|
53 | (6) |
|
Viewing Windows and Toolbars |
|
|
53 | (1) |
|
|
54 | (3) |
|
|
57 | (2) |
|
|
59 | (6) |
|
|
59 | (3) |
|
|
62 | (1) |
|
|
63 | (1) |
|
|
64 | (1) |
|
|
65 | (1) |
|
|
65 | (7) |
|
|
66 | (2) |
|
|
68 | (1) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
Importing and Exporting Settings |
|
|
72 | (3) |
|
|
74 | (1) |
|
|
75 | (2) |
|
Chapter 4 The Visual Studio Workspace |
|
|
77 | (24) |
|
|
77 | (13) |
|
The Code Editor Window Layout |
|
|
77 | (2) |
|
|
79 | (1) |
|
|
79 | (1) |
|
|
80 | (1) |
|
Navigating Forward/Backward |
|
|
81 | (1) |
|
Additional Code Editor Features |
|
|
82 | (1) |
|
|
83 | (1) |
|
Tear Away (Floating) Code Windows |
|
|
84 | (2) |
|
Duplicating Solution Explorer |
|
|
86 | (1) |
|
|
86 | (2) |
|
|
88 | (2) |
|
|
90 | (6) |
|
|
90 | (1) |
|
|
91 | (3) |
|
|
94 | (1) |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
97 | (1) |
|
|
98 | (1) |
|
|
99 | (1) |
|
|
99 | (1) |
|
|
100 | (1) |
|
Chapter 5 Find And Replace And Help |
|
|
101 | (16) |
|
|
102 | (2) |
|
|
102 | (1) |
|
|
103 | (1) |
|
|
104 | (1) |
|
|
104 | (1) |
|
|
104 | (6) |
|
|
105 | (1) |
|
|
106 | (1) |
|
|
106 | (2) |
|
|
108 | (1) |
|
|
109 | (1) |
|
|
110 | (3) |
|
Navigating and Searching the Help System |
|
|
112 | (1) |
|
Configuring the Help System |
|
|
112 | (1) |
|
|
113 | (4) |
Part II: Getting Started |
|
|
Chapter 6 Solutions, Projects, And Items |
|
|
117 | (38) |
|
|
118 | (1) |
|
|
119 | (1) |
|
|
120 | (4) |
|
|
120 | (2) |
|
|
122 | (2) |
|
|
124 | (2) |
|
|
126 | (1) |
|
|
127 | (19) |
|
|
128 | (3) |
|
Compile (Visual Basic Only) |
|
|
131 | (2) |
|
|
133 | (1) |
|
Build Events (C# and F# Only) |
|
|
134 | (1) |
|
|
135 | (1) |
|
References (Visual Basic Only) |
|
|
136 | (1) |
|
|
137 | (1) |
|
|
138 | (1) |
|
|
139 | (1) |
|
Reference Paths (C# and F# Only) |
|
|
140 | (1) |
|
|
141 | (1) |
|
My Extensions (Visual Basic Only) |
|
|
141 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
|
143 | (3) |
|
|
146 | (1) |
|
Web Application Project Properties |
|
|
146 | (3) |
|
|
146 | (1) |
|
|
147 | (1) |
|
|
148 | (1) |
|
|
149 | (1) |
|
|
150 | (2) |
|
|
150 | (1) |
|
|
151 | (1) |
|
|
152 | (3) |
|
Chapter 7 Intellisense And Bookmarks |
|
|
155 | (24) |
|
|
156 | (10) |
|
|
156 | (2) |
|
|
158 | (1) |
|
Completing Words and Phrases |
|
|
158 | (7) |
|
|
165 | (1) |
|
|
166 | (1) |
|
|
166 | (3) |
|
The JavaScript IntelliSense Context |
|
|
167 | (1) |
|
Referencing Another JavaScript File |
|
|
168 | (1) |
|
|
169 | (1) |
|
|
170 | (3) |
|
|
170 | (2) |
|
|
172 | (1) |
|
|
172 | (1) |
|
|
173 | (2) |
|
|
173 | (1) |
|
|
174 | (1) |
|
Adding Your Own IntelliSense |
|
|
174 | (1) |
|
Bookmarks and the Bookmark Window |
|
|
175 | (2) |
|
|
177 | (2) |
|
Chapter 8 Code Snippets And Refactoring |
|
|
179 | (24) |
|
|
180 | (12) |
|
Storing Code Blocks in the Toolbox |
|
|
180 | (1) |
|
|
180 | (1) |
|
|
181 | (2) |
|
|
183 | (1) |
|
|
184 | (1) |
|
|
184 | (2) |
|
|
186 | (1) |
|
Reviewing Existing Snippets |
|
|
186 | (5) |
|
Distributing Code Snippets |
|
|
191 | (1) |
|
Accessing Refactoring Support |
|
|
192 | (1) |
|
|
192 | (9) |
|
|
192 | (1) |
|
|
193 | (1) |
|
|
194 | (1) |
|
|
195 | (1) |
|
Inline and Explaining Variables |
|
|
196 | (1) |
|
|
197 | (1) |
|
Simplify Object Initialization |
|
|
198 | (1) |
|
Inline Variable Declarations |
|
|
199 | (1) |
|
|
199 | (1) |
|
|
200 | (1) |
|
|
201 | (1) |
|
|
201 | (2) |
|
Chapter 9 Server Explorer |
|
|
203 | (16) |
|
|
204 | (11) |
|
|
205 | (2) |
|
|
207 | (3) |
|
|
210 | (3) |
|
|
213 | (2) |
|
|
215 | (1) |
|
|
215 | (1) |
|
|
215 | (4) |
Part III: Digging Deeper |
|
|
|
219 | (28) |
|
|
220 | (9) |
|
Identifying Tests Using Attributes |
|
|
225 | (1) |
|
Additional Test Attributes |
|
|
226 | (2) |
|
|
228 | (1) |
|
|
229 | (3) |
|
|
229 | (1) |
|
|
230 | (1) |
|
The CollectionAssert Class |
|
|
230 | (1) |
|
The ExpectedException Attribute |
|
|
231 | (1) |
|
Initializing and Cleaning Up |
|
|
232 | (1) |
|
TestInitialize and TestCleanup |
|
|
233 | (1) |
|
ClassInitialize and ClassCleanup |
|
|
233 | (1) |
|
AssemblyInitialize and AssemblyCleanup |
|
|
233 | (1) |
|
|
233 | (5) |
|
|
234 | (3) |
|
|
237 | (1) |
|
|
238 | (1) |
|
|
239 | (3) |
|
|
239 | (1) |
|
|
240 | (2) |
|
|
242 | (2) |
|
|
244 | (3) |
|
Chapter 11 Project And Item Templates |
|
|
247 | (18) |
|
|
247 | (8) |
|
|
248 | (4) |
|
|
252 | (1) |
|
|
253 | (1) |
|
|
254 | (1) |
|
|
255 | (1) |
|
|
255 | (7) |
|
|
256 | (1) |
|
|
256 | (5) |
|
Generating the Extended Project Template |
|
|
261 | (1) |
|
|
262 | (1) |
|
|
263 | (1) |
|
|
264 | (1) |
|
Chapter 12 Managing Your Source Code |
|
|
265 | (10) |
|
|
266 | (6) |
|
Selecting a Source Control Repository |
|
|
266 | (1) |
|
|
267 | (5) |
|
|
272 | (3) |
Part IV: Desktop Applications |
|
|
Chapter 13 Windows Forms Applications |
|
|
275 | (18) |
|
|
275 | (1) |
|
|
276 | (2) |
|
|
278 | (1) |
|
|
278 | (1) |
|
|
278 | (1) |
|
|
278 | (3) |
|
Adding and Positioning Controls |
|
|
281 | (6) |
|
Vertically Aligning Text Controls |
|
|
282 | (1) |
|
Automatic Positioning of Multiple Controls |
|
|
282 | (2) |
|
Tab Order and Layering Controls |
|
|
284 | (1) |
|
|
284 | (1) |
|
Setting Control Properties |
|
|
285 | (1) |
|
|
286 | (1) |
|
|
286 | (1) |
|
|
287 | (3) |
|
|
287 | (1) |
|
|
288 | (1) |
|
|
289 | (1) |
|
Docking and Anchoring Controls |
|
|
290 | (1) |
|
|
291 | (2) |
|
Chapter 14 Windows Presentation Foundation (WPF) |
|
|
293 | (34) |
|
|
294 | (1) |
|
|
295 | (7) |
|
|
297 | (1) |
|
|
298 | (1) |
|
|
299 | (3) |
|
The WPF Designer and XAML Editor |
|
|
302 | (15) |
|
Working with the XAML Editor |
|
|
303 | (1) |
|
Working with the WPF Designer |
|
|
304 | (4) |
|
The Properties Tool Window |
|
|
308 | (4) |
|
|
312 | (5) |
|
|
317 | (2) |
|
Windows Forms Interoperability |
|
|
319 | (5) |
|
Hosting a WPF Control in Windows Forms |
|
|
320 | (2) |
|
Hosting a Windows Forms Control in WPF |
|
|
322 | (2) |
|
Debugging with the WPF Visualizer |
|
|
324 | (2) |
|
|
326 | (1) |
|
Chapter 15 Universal Windows Platform Apps |
|
|
327 | (18) |
|
|
328 | (3) |
|
|
329 | (1) |
|
|
329 | (1) |
|
|
330 | (1) |
|
|
330 | (1) |
|
|
330 | (1) |
|
|
331 | (7) |
|
|
334 | (4) |
|
Windows Runtime Components |
|
|
338 | (1) |
|
|
339 | (2) |
|
Compiling Using .NET Native Tools |
|
|
340 | (1) |
|
|
341 | (4) |
Part V: Web Applications |
|
|
Chapter 16 Asp.Net Web Forms |
|
|
345 | (34) |
|
Web Application Versus Web Site Projects |
|
|
346 | (1) |
|
|
347 | (7) |
|
Creating a Web Site Project |
|
|
347 | (4) |
|
Creating a Web Application Project |
|
|
351 | (3) |
|
|
354 | (12) |
|
|
354 | (3) |
|
Positioning Controls and HTML Elements |
|
|
357 | (2) |
|
Formatting Controls and HTML Elements |
|
|
359 | (1) |
|
|
360 | (4) |
|
|
364 | (2) |
|
|
366 | (6) |
|
|
366 | (1) |
|
|
367 | (1) |
|
|
368 | (4) |
|
|
372 | (2) |
|
Rich Client-Side Development |
|
|
374 | (4) |
|
Developing with JavaScript |
|
|
374 | (1) |
|
Working with ASP.NET AJAX |
|
|
375 | (3) |
|
|
378 | (1) |
|
|
379 | (1) |
|
|
380 | (35) |
|
Getting Started with ASP.NET MVC |
|
|
381 | (3) |
|
|
384 | (1) |
|
Controllers and Action Methods |
|
|
385 | (3) |
|
|
385 | (3) |
|
Rendering a UI with Views |
|
|
388 | (7) |
|
|
395 | (18) |
|
|
395 | (5) |
|
|
400 | (3) |
|
|
403 | (3) |
|
|
406 | (2) |
|
|
408 | (1) |
|
|
409 | (3) |
|
|
412 | (1) |
|
|
413 | (2) |
|
|
415 | (18) |
|
|
416 | (2) |
|
Working with ASP.NET Core |
|
|
418 | (6) |
|
project.json versus csproj |
|
|
418 | (1) |
|
Creating an ASP.NET Core Application |
|
|
419 | (5) |
|
|
424 | (4) |
|
|
428 | (3) |
|
|
431 | (2) |
|
Chapter 19 Node.js Development |
|
|
433 | (16) |
|
Getting Started with Node.js |
|
|
433 | (7) |
|
|
440 | (4) |
|
|
444 | (3) |
|
|
447 | (2) |
|
Chapter 20 Python Development |
|
|
449 | (12) |
|
Getting Started with Python |
|
|
450 | (5) |
|
|
455 | (2) |
|
|
457 | (4) |
Part VI: Mobile Applications |
|
|
Chapter 21 Mobile Applications Using .Net |
|
|
461 | (24) |
|
|
462 | (1) |
|
Creating a Xamarin Forms Project |
|
|
463 | (3) |
|
Debugging Your Application |
|
|
466 | (18) |
|
Universal Windows Platform |
|
|
466 | (1) |
|
|
466 | (14) |
|
|
480 | (4) |
|
|
484 | (1) |
|
Chapter 22 Mobile Applications Using Javascript |
|
|
485 | (16) |
|
|
486 | (1) |
|
Creating an Apache Cordova Project |
|
|
487 | (8) |
|
|
488 | (1) |
|
|
489 | (1) |
|
|
489 | (1) |
|
Additional Files and Folders |
|
|
489 | (6) |
|
Debugging in Apache Cordova |
|
|
495 | (3) |
|
|
498 | (3) |
Part VII: Cloud Services |
|
|
|
501 | (18) |
|
The Windows Azure Platform |
|
|
502 | (9) |
|
|
504 | (1) |
|
Communicating between Roles |
|
|
505 | (3) |
|
|
508 | (3) |
|
|
511 | (2) |
|
|
513 | (2) |
|
|
515 | (1) |
|
|
516 | (2) |
|
|
516 | (1) |
|
|
516 | (1) |
|
|
517 | (1) |
|
|
518 | (1) |
|
Chapter 24 Synchronization Services |
|
|
519 | (12) |
|
Occasionally Connected Applications |
|
|
520 | (1) |
|
|
520 | (4) |
|
Getting Started with Synchronization Services |
|
|
524 | (4) |
|
Synchronization Services over N-Tiers |
|
|
528 | (1) |
|
|
529 | (2) |
|
|
531 | (20) |
|
SharePoint Execution Models |
|
|
532 | (1) |
|
|
532 | (1) |
|
|
532 | (1) |
|
|
533 | (1) |
|
Preparing the Development Environment |
|
|
533 | (3) |
|
Creating a SharePoint Project |
|
|
536 | (9) |
|
|
545 | (2) |
|
|
547 | (4) |
Part VIII: Data |
|
|
Chapter 26 Visual Database Tools |
|
|
551 | (20) |
|
Database Windows in Visual Studio 2017 |
|
|
552 | (7) |
|
|
552 | (5) |
|
|
557 | (1) |
|
SQL Server Object Explorer |
|
|
558 | (1) |
|
|
559 | (1) |
|
|
560 | (9) |
|
|
560 | (5) |
|
|
565 | (2) |
|
|
567 | (2) |
|
|
569 | (2) |
|
Chapter 27 The Ado.Net Entity Framework |
|
|
571 | (26) |
|
What Is the Entity Framework? |
|
|
572 | (1) |
|
|
573 | (1) |
|
|
573 | (15) |
|
The Entity Data Model Wizard |
|
|
573 | (4) |
|
The Entity Framework Designer |
|
|
577 | (5) |
|
Creating/Modifying Entities |
|
|
582 | (3) |
|
Creating/Modifying Entity Associations |
|
|
585 | (2) |
|
|
587 | (1) |
|
Validating an Entity Model |
|
|
587 | (1) |
|
Updating an Entity Model with Database Changes |
|
|
587 | (1) |
|
Querying the Entity Model |
|
|
588 | (7) |
|
LINQ to Entities Overview |
|
|
588 | (1) |
|
Getting an Object Context |
|
|
589 | (1) |
|
|
589 | (4) |
|
Navigating Entity Associations |
|
|
593 | (2) |
|
|
595 | (1) |
|
Updating a Database from an Entity Model |
|
|
595 | (1) |
|
Adding Business Logic to Entities |
|
|
595 | (1) |
|
Plain Old CLR Objects (POCO) |
|
|
596 | (1) |
|
|
596 | (1) |
|
|
596 | (1) |
|
Chapter 28 Data Warehouses And Lakes |
|
|
597 | (14) |
|
|
597 | (3) |
|
Hadoop Distributed File System |
|
|
598 | (1) |
|
|
598 | (1) |
|
|
599 | (1) |
|
|
599 | (1) |
|
|
600 | (1) |
|
Data Lake Tools for Visual Studio |
|
|
600 | (11) |
|
Creating a Hive Application |
|
|
602 | (4) |
|
Creating a Pig Application |
|
|
606 | (4) |
|
|
610 | (1) |
|
Chapter 29 Data Science And Analytics |
|
|
611 | (14) |
|
|
612 | (1) |
|
R Tools for Visual Studio |
|
|
612 | (10) |
|
|
616 | (3) |
|
|
619 | (1) |
|
|
620 | (2) |
|
|
622 | (3) |
Part IX: Debugging |
|
|
Chapter 30 Using The Debugging Windows |
|
|
625 | (20) |
|
|
625 | (1) |
|
|
626 | (1) |
|
|
626 | (1) |
|
|
626 | (1) |
|
|
627 | (1) |
|
|
628 | (2) |
|
|
630 | (2) |
|
|
630 | (1) |
|
|
631 | (1) |
|
|
632 | (1) |
|
The Code Execution Windows |
|
|
632 | (2) |
|
|
632 | (1) |
|
|
633 | (1) |
|
|
633 | (1) |
|
|
634 | (1) |
|
|
634 | (3) |
|
|
635 | (1) |
|
|
635 | (1) |
|
|
636 | (1) |
|
The Parallel Debugging Windows |
|
|
637 | (3) |
|
|
637 | (2) |
|
|
639 | (1) |
|
|
640 | (3) |
|
|
643 | (2) |
|
Chapter 31 Debugging With Breakpoints |
|
|
645 | (16) |
|
|
645 | (7) |
|
|
646 | (2) |
|
|
648 | (2) |
|
|
650 | (2) |
|
|
652 | (2) |
|
|
654 | (2) |
|
|
654 | (2) |
|
|
656 | (1) |
|
Moving the Execution Point |
|
|
656 | (1) |
|
|
656 | (1) |
|
|
657 | (1) |
|
|
657 | (1) |
|
|
657 | (4) |
Part X: Build And Deployment |
|
|
Chapter 32 Upgrading With Visual Studio 2017 |
|
|
661 | (8) |
|
Upgrading from Recent Visual Studio Versions |
|
|
662 | (3) |
|
Upgrading to .NET Framework 4.6.2 |
|
|
665 | (1) |
|
|
666 | (3) |
|
Chapter 33 Build Customization |
|
|
669 | (20) |
|
|
669 | (3) |
|
|
672 | (1) |
|
The Visual Basic Compile Page |
|
|
673 | (6) |
|
Advanced Compiler Settings |
|
|
674 | (2) |
|
|
676 | (3) |
|
|
679 | (2) |
|
|
681 | (6) |
|
How Visual Studio Uses MSBuild |
|
|
681 | (3) |
|
|
684 | (1) |
|
Assembly Versioning via MSBuild Tasks |
|
|
685 | (2) |
|
|
687 | (2) |
|
Chapter 34 Obfuscation, Application Monitoring, And Management |
|
|
689 | (18) |
|
|
690 | (1) |
|
|
691 | (2) |
|
|
693 | (9) |
|
Dotfuscator and Analytics |
|
|
693 | (5) |
|
|
698 | (2) |
|
|
700 | (2) |
|
Application Monitoring and Management |
|
|
702 | (4) |
|
|
703 | (1) |
|
Application Instrumentation and Analytics |
|
|
704 | (2) |
|
|
706 | (1) |
|
Chapter 35 Packaging And Deployment |
|
|
707 | (18) |
|
Windows Installer XML Toolset |
|
|
708 | (8) |
|
|
709 | (3) |
|
Using Heat to Create Fragments |
|
|
712 | (4) |
|
|
716 | (1) |
|
|
716 | (7) |
|
|
717 | (4) |
|
|
721 | (2) |
|
|
723 | (2) |
|
Chapter 36 Web Application Deployment |
|
|
725 | (16) |
|
|
726 | (7) |
|
Publishing a Web Application |
|
|
726 | (3) |
|
|
729 | (4) |
|
|
733 | (2) |
|
The Web Platform Installer |
|
|
735 | (4) |
|
Extending the Web Platform Installer |
|
|
736 | (3) |
|
|
739 | (2) |
|
Chapter 37 Continuous Delivery |
|
|
741 | (12) |
|
|
742 | (1) |
|
|
742 | (1) |
|
|
742 | (1) |
|
|
743 | (1) |
|
Continuous Delivery Tools |
|
|
743 | (7) |
|
Setting Up Continuous Delivery |
|
|
744 | (2) |
|
|
746 | (1) |
|
Automatic Build Notifications |
|
|
747 | (3) |
|
|
750 | (3) |
Part XI: Visual Studio Editions |
|
|
Chapter 38 Visual Studio Enterprise: Code Quality |
|
|
753 | (8) |
|
|
754 | (4) |
|
Exploring Code with Code Maps |
|
|
758 | (2) |
|
|
760 | (1) |
|
|
760 | (1) |
|
Chapter 39 Visual Studio Enterprise: Testing And Debugging |
|
|
761 | (16) |
|
|
762 | (7) |
|
|
762 | (2) |
|
|
764 | (4) |
|
|
768 | (1) |
|
|
769 | (1) |
|
|
769 | (1) |
|
|
769 | (5) |
|
|
772 | (2) |
|
|
774 | (1) |
|
|
775 | (2) |
|
Chapter 40 Visual Studio Team Services |
|
|
777 | (14) |
|
|
778 | (4) |
|
|
782 | (2) |
|
|
782 | (1) |
|
|
783 | (1) |
|
|
783 | (1) |
|
|
784 | (3) |
|
|
784 | (2) |
|
|
786 | (1) |
|
|
786 | (1) |
|
|
787 | (1) |
|
|
787 | (2) |
|
|
789 | (1) |
|
|
790 | (1) |
Index |
|
791 | |