Install Visual Studio 2019 preview, .NET Core SDK 5
Create a new project
The first run will take quite a while, due to the need to download the libraries. Wait patiently for about 5 minutes, not the Visual Studio 2019 preview hangs. The web browser will be turned off automatically. If there is an error warning dialog box, accept it. Because the results still appear:
Some source files illustrate
File SKClientAppsrcappcountercounter.component.html
1 2 3 4 5 6 7 8 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> h1</span> <span class="token punctuation">></span></span> Counter <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> h1</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> p</span> <span class="token punctuation">></span></span> This is a simple example of an Angular component. <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> p</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> p</span> <span class="token attr-name">aria-live</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> polite <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> Current count: <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> strong</span> <span class="token punctuation">></span></span> {{ currentCount }} <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> strong</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> p</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> button</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> btn btn-primary <span class="token punctuation">"</span></span> <span class="token attr-name">(click)</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> incrementCounter() <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> Increment <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> button</span> <span class="token punctuation">></span></span> |
File SKClientAppsrcappcountercounter.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token keyword">import</span> <span class="token punctuation">{</span> Component <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'@angular/core'</span> <span class="token punctuation">;</span> @ <span class="token function">Component</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> selector <span class="token punctuation">:</span> <span class="token string">'app-counter-component'</span> <span class="token punctuation">,</span> templateUrl <span class="token punctuation">:</span> <span class="token string">'./counter.component.html'</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token keyword">export</span> <span class="token keyword">class</span> <span class="token class-name">CounterComponent</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> currentCount <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token function">incrementCounter</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> currentCount <span class="token operator">++</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
File SKClientAppsrcappfetch-datafetch-data.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token keyword">import</span> <span class="token punctuation">{</span> Component <span class="token punctuation">,</span> Inject <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'@angular/core'</span> <span class="token punctuation">;</span> <span class="token keyword">import</span> <span class="token punctuation">{</span> HttpClient <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'@angular/common/http'</span> <span class="token punctuation">;</span> @ <span class="token function">Component</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> selector <span class="token punctuation">:</span> <span class="token string">'app-fetch-data'</span> <span class="token punctuation">,</span> templateUrl <span class="token punctuation">:</span> <span class="token string">'./fetch-data.component.html'</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token keyword">export</span> <span class="token keyword">class</span> <span class="token class-name">FetchDataComponent</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> forecasts <span class="token punctuation">:</span> WeatherForecast <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token keyword">constructor</span> <span class="token punctuation">(</span> http <span class="token punctuation">:</span> HttpClient <span class="token punctuation">,</span> @ <span class="token function">Inject</span> <span class="token punctuation">(</span> <span class="token string">'BASE_URL'</span> <span class="token punctuation">)</span> baseUrl <span class="token punctuation">:</span> <span class="token builtin">string</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> http <span class="token punctuation">.</span> <span class="token keyword">get</span> <span class="token operator"><</span> WeatherForecast <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token operator">></span> <span class="token punctuation">(</span> baseUrl <span class="token operator">+</span> <span class="token string">'weatherforecast'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">subscribe</span> <span class="token punctuation">(</span> result <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> forecasts <span class="token operator">=</span> result <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> error <span class="token operator">=></span> <span class="token builtin">console</span> <span class="token punctuation">.</span> <span class="token function">error</span> <span class="token punctuation">(</span> error <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">interface</span> <span class="token class-name">WeatherForecast</span> <span class="token punctuation">{</span> date <span class="token punctuation">:</span> <span class="token builtin">string</span> <span class="token punctuation">;</span> temperatureC <span class="token punctuation">:</span> <span class="token builtin">number</span> <span class="token punctuation">;</span> temperatureF <span class="token punctuation">:</span> <span class="token builtin">number</span> <span class="token punctuation">;</span> summary <span class="token punctuation">:</span> <span class="token builtin">string</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Other source files can be viewed in the newly created project.
Update to the latest version SKClientApppackage.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <span class="token punctuation">{</span> <span class="token property">"name"</span> <span class="token operator">:</span> <span class="token string">"sk"</span> <span class="token punctuation">,</span> <span class="token property">"version"</span> <span class="token operator">:</span> <span class="token string">"0.0.0"</span> <span class="token punctuation">,</span> <span class="token property">"scripts"</span> <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"ng"</span> <span class="token operator">:</span> <span class="token string">"ng"</span> <span class="token punctuation">,</span> <span class="token property">"start"</span> <span class="token operator">:</span> <span class="token string">"ng serve"</span> <span class="token punctuation">,</span> <span class="token property">"build"</span> <span class="token operator">:</span> <span class="token string">"ng build"</span> <span class="token punctuation">,</span> <span class="token property">"build:ssr"</span> <span class="token operator">:</span> <span class="token string">"ng run SK:server:dev"</span> <span class="token punctuation">,</span> <span class="token property">"test"</span> <span class="token operator">:</span> <span class="token string">"ng test"</span> <span class="token punctuation">,</span> <span class="token property">"lint"</span> <span class="token operator">:</span> <span class="token string">"ng lint"</span> <span class="token punctuation">,</span> <span class="token property">"e2e"</span> <span class="token operator">:</span> <span class="token string">"ng e2e"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token property">"private"</span> <span class="token operator">:</span> <span class="token boolean">true</span> <span class="token punctuation">,</span> <span class="token property">"dependencies"</span> <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"@angular/animations"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/common"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/compiler"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/core"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/forms"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/platform-browser"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/platform-browser-dynamic"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/platform-server"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/router"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@nguniversal/module-map-ngfactory-loader"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"aspnet-prerendering"</span> <span class="token operator">:</span> <span class="token string">"^3.0.1"</span> <span class="token punctuation">,</span> <span class="token property">"bootstrap"</span> <span class="token operator">:</span> <span class="token string">"4.5.0"</span> <span class="token punctuation">,</span> <span class="token property">"core-js"</span> <span class="token operator">:</span> <span class="token string">"3.6.5"</span> <span class="token punctuation">,</span> <span class="token property">"jquery"</span> <span class="token operator">:</span> <span class="token string">"3.5.1"</span> <span class="token punctuation">,</span> <span class="token property">"oidc-client"</span> <span class="token operator">:</span> <span class="token string">"1.10.1"</span> <span class="token punctuation">,</span> <span class="token property">"popper.js"</span> <span class="token operator">:</span> <span class="token string">"^1.16.0"</span> <span class="token punctuation">,</span> <span class="token property">"rxjs"</span> <span class="token operator">:</span> <span class="token string">"6.5.5"</span> <span class="token punctuation">,</span> <span class="token property">"zone.js"</span> <span class="token operator">:</span> <span class="token string">"0.10.3"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token property">"devDependencies"</span> <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"@angular-devkit/build-angular"</span> <span class="token operator">:</span> <span class="token string">"^0.901.9"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/cli"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/compiler-cli"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@angular/language-service"</span> <span class="token operator">:</span> <span class="token string">"9.1.11"</span> <span class="token punctuation">,</span> <span class="token property">"@types/jasmine"</span> <span class="token operator">:</span> <span class="token string">"~3.4.4"</span> <span class="token punctuation">,</span> <span class="token property">"@types/jasminewd2"</span> <span class="token operator">:</span> <span class="token string">"~2.0.8"</span> <span class="token punctuation">,</span> <span class="token property">"@types/node"</span> <span class="token operator">:</span> <span class="token string">"~12.11.6"</span> <span class="token punctuation">,</span> <span class="token property">"codelyzer"</span> <span class="token operator">:</span> <span class="token string">"^5.2.0"</span> <span class="token punctuation">,</span> <span class="token property">"jasmine-core"</span> <span class="token operator">:</span> <span class="token string">"~3.5.0"</span> <span class="token punctuation">,</span> <span class="token property">"jasmine-spec-reporter"</span> <span class="token operator">:</span> <span class="token string">"~4.2.1"</span> <span class="token punctuation">,</span> <span class="token property">"karma"</span> <span class="token operator">:</span> <span class="token string">"^5.0.2"</span> <span class="token punctuation">,</span> <span class="token property">"karma-chrome-launcher"</span> <span class="token operator">:</span> <span class="token string">"~3.1.0"</span> <span class="token punctuation">,</span> <span class="token property">"karma-coverage-istanbul-reporter"</span> <span class="token operator">:</span> <span class="token string">"~2.1.0"</span> <span class="token punctuation">,</span> <span class="token property">"karma-jasmine"</span> <span class="token operator">:</span> <span class="token string">"~2.0.1"</span> <span class="token punctuation">,</span> <span class="token property">"karma-jasmine-html-reporter"</span> <span class="token operator">:</span> <span class="token string">"^1.4.2"</span> <span class="token punctuation">,</span> <span class="token property">"typescript"</span> <span class="token operator">:</span> <span class="token string">"3.5.3"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token property">"optionalDependencies"</span> <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"node-sass"</span> <span class="token operator">:</span> <span class="token string">"^4.12.0"</span> <span class="token punctuation">,</span> <span class="token property">"protractor"</span> <span class="token operator">:</span> <span class="token string">"~5.4.2"</span> <span class="token punctuation">,</span> <span class="token property">"ts-node"</span> <span class="token operator">:</span> <span class="token string">"~8.4.1"</span> <span class="token punctuation">,</span> <span class="token property">"tslint"</span> <span class="token operator">:</span> <span class="token string">"~5.20.0"</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Clean project, then rebuild, so that the relevant libraries are the latest.