Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add Angular 4 to an ASP.NETCore Project

I want to utilize Angular 4 in my ASP.NetCore 1.1 project, within Visual Studio 2017 (read as: *.csproj file)

Previously with ASP.NET Core 1.0 and Visual Studio 2015, you could simply add AngularJS (1.x.x) into the project.json as a dependency and it would wire itself in.

Now, with ASP.NetCore and VS2017, the project.json file has gone away, and the only documentation I can find refers to STARTING an Angular 4 project by using the CLI and using the CLI to generate a NEW angular app. I don't really want a new project or have to refactor everything I have created to provide a service to a separate UI project. I just want to augment my app with some added client-side UI experience.

Any suggestions?

Update

This questions has been getting a lot of views and the information is of little help so I'm providing this update.

Visual Studio 2017 (*.csproj)

  • Asp.Net Core 2.0 + Angular (v2.0~v4.0) :: Use the built in template! Best option IMO.

  • Asp.Net Core 1.X + Angular (v2.0~v4.0)

    • Create VS Project.
    • Create Angular Project via Angular CLI
    • Configuration and setup details : Link

Visual Studio 2015 (project.json)

  • Tooling: up to version -preview2 - No further updates, all new .NET Core features will be moving to VS 2017

    • Asp.Net Core 1.X + Angular (v2.0~v4.0)

      • Asp.Net Core Template Pack
      • Note: I wouldn't endorse a bad VS Plugin, Mads Kristensen does good work.
      • Configuration and setup details : Blog post
    • Asp.Net Core 1.X + AngularJS (~1.5)

      • Configuration and setup details : Microsoft Tutorial
    • Asp.Net MVC 5 + AngularJS (~1.5)

      • Pluralsight Blog Guide

Notes: There are many other ways to get Angular to work with ASP.Net / .NetCore projects such as NPM, Bower, NuGet, etc. I tried to highlight the ones which are simple and actually work. Also these are in line with the direction Microsoft is moving in, according to the Pluralsight blog post above.

like image 892
Adam Vincent Avatar asked Jun 21 '17 18:06

Adam Vincent


3 Answers

[i am aware you didn't ask this specifically but just wanted to share a thought which is very relevant in my opinion]

I was at the exactly the same point a few months ago and i decided going with angular cli. and i thank God i made that decision. Uncomparably more clear and it actually put things how they should be: .net core web api backend and completely separated angular client. just exactly the same as you wouldn't put your iphone/android app into VS solution, there is no real reason to put angular one neither.

UPDATE Either use MVC with Razor, OR use Angular as a SPA, and if you use Angular, use the Angular CLI. And if you use angular, feed data into it with asp.net (core) Web Api as a REST backend

like image 108
dee zg Avatar answered Nov 16 '22 21:11

dee zg


I can see how this is confusing, but dee zg is correct. You're going to want two separate projects. One will be the .net core backend api (REST) and the other will be the Angular 2 spa. There will be a complete separation.

With AngularJS, you could just drop in the js file into a razor view and call it a day. However, with Angular 2/4 and React, it's best to host each project in it's own solution. This might seem silly at the beginning, but when you build out your api, it can be easily future proofed by having the capability of also being consumed by mobile apps, desktop apps, etc.

I know there is a dotnet spa services angular cli powershell command for .net core, but it is really kind of a mess and actually outputs invalid html that could possibly be detrimental to SEO, etc. It's best, IMO, to just use the angular CLI in a separate project.

When it comes to production, you'll host the .net core api and the angular 2 projects separately.

like image 45
DJDJ Avatar answered Nov 16 '22 21:11

DJDJ


It’s not totally clear to me what you mean by "Add Angular 4 to an ASP.NET Core Project", but one way to do this is the following:

  1. Create an Angular 4 project (using angular-cli).
  2. Create an ASP.NET Core project (using .NET Core CLI) in the same directory as the Angular project.
  3. Adjust the webpack.config.js file (which is part of the angular-cli installation) in order to automatically put bundled files in the wwwroot directory (webpack will be responsible for this).

On my blog, I have a detailed tutorial demonstrating this approach.

like image 23
Anton Avatar answered Nov 16 '22 22:11

Anton