Verwenden von Grunt, Bower, Gulp, NPM mit Visual Studio 2015 für ein ASP.NET 4.5-Projekt

90

Visual Studio 2015 bietet integrierte Unterstützung für Tools wie Grunt, Bower, Gulp und NPM für ASP.NET 5-Projekte.

Wenn ich jedoch ein ASP.NET 4.5.2-Projekt mit Visual Studio 2015 erstelle, werden diese Tools nicht verwendet. Ich möchte Bower anstelle von Nuget verwenden, um clientseitige Pakete zu verwalten.

Ich kann Informationen zur Verwendung dieser Tools mit Visual Studio 2013 finden (siehe diese Frage zum Beispiel). Ich denke jedoch, dass das Verfahren für Visual Studio 2015 anders ist, da es die Unterstützung für diese Tools integriert hat.

Robert Hegner
quelle

Antworten:

128

Obwohl Liviu Costeas Antwort richtig ist, habe ich noch einige Zeit gebraucht, um herauszufinden, wie es tatsächlich gemacht wird. Hier ist meine Schritt-für-Schritt-Anleitung ab einem neuen ASP.NET 4.5.2 MVC-Projekt. Dieses Handbuch enthält die clientseitige Paketverwaltung mit Bower, behandelt jedoch (noch) nicht das Bündeln / Grunzen / Schlucken.

Schritt 1 (Projekt erstellen)

Erstellen Sie mit Visual Studio 2015 ein neues ASP.NET 4.5.2-Projekt (MVC-Vorlage).

Schritt 2 (Bündelung / Optimierung aus dem Projekt entfernen)

Schritt 2.1

Deinstallieren Sie die folgenden Nuget-Pakete:

  • Bootstrap
  • Microsoft.jQuery.Unobstrusive.Validation
  • jQuery.Validation
  • jQuery
  • Microsoft.AspNet.Web.Optimization
  • WebGrease
  • Antlr
  • Modernizr
  • Reagieren

Schritt 2.2

App_Start\BundleConfig.csAus dem Projekt entfernen .

Schritt 2.3

Entfernen

using System.Web.Optimization;

und

BundleConfig.RegisterBundles(BundleTable.Bundles);

von Global.asax.cs

Schritt 2.4

Entfernen

<add namespace="System.Web.Optimization"/>

von Views\Web.config

Schritt 2.5

Entfernen Sie die Baugruppenbindungen für System.Web.Optimizationund WebGreasevonWeb.config

Schritt 3 (Laube zum Projekt hinzufügen)

Schritt 3.1

Neue package.jsonDatei zum Projekt NPM configuration filehinzufügen ( Elementvorlage)

Schritt 3.2

Hinzufügen bowerzu devDependencies:

{
  "version": "1.0.0",
  "name": "ASP.NET",
  "private": true,
  "devDependencies": {
    "bower": "1.4.1"
  }
}

Das Laubenpaket wird beim Speichern automatisch installiert package.json.

Schritt 4 (Laube konfigurieren)

Schritt 4.1

Neue bower.jsonDatei zum Projekt Bower Configuration filehinzufügen ( Elementvorlage)

Schritt 4.2

Fügen Sie bootstrap, jquery-validation-unobtrusive, modernizrund respondzu Abhängigkeiten:

{
  "name": "ASP.NET",
  "private": true,
  "dependencies": {
    "bootstrap": "*",
    "jquery-validation-unobtrusive": "*",
    "modernizr": "*",
    "respond": "*"
  }
}

Diese Pakete und ihre Abhängigkeiten werden beim bower.jsonSpeichern automatisch installiert .

Schritt 5 (Ändern Views\Shared\_Layout.cshtml)

Schritt 5.1

Ersetzen

@Styles.Render("~/Content/css")

mit

<link rel="stylesheet" href="~/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/Content/Site.css" />

Schritt 5.2

Ersetzen

@Scripts.Render("~/bundles/modernizr")

mit

<script src="~/wwwroot/lib/modernizr/modernizr.js" ></script>

Schritt 5.3

Ersetzen

@Scripts.Render("~/bundles/jquery")

mit

<script src="~/wwwroot/lib/jquery/dist/jquery.min.js"></script>

Schritt 5.4

Ersetzen

@Scripts.Render("~/bundles/bootstrap")

mit

<script src="~/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="~/wwwroot/lib/respond/dest/respond.min.js"></script>

Schritt 6 (Andere Quellen ändern)

In allen anderen Ansichten ersetzen

@Scripts.Render("~/bundles/jqueryval")

mit

<script src="~/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

Nützliche Links


Bündeln & Minimieren

In den Kommentaren unten empfiehlt LavaHot die Bundler & Minifier-Erweiterung als Ersatz für den Standard-Bundler, den ich in Schritt 2 entferne. Er empfiehlt auch diesen Artikel zum Bündeln mit Gulp.

Robert Hegner
quelle
6
Vielen Dank. Habe ich Recht, dass ein Schritt übersehen wird: Wie man ~ / wwwroot /../bower_components zuordnet (oder gulp / grunt config, wie man Bower-Pakete nach "~ / wwwroot" verschiebt) Könnten Sie diesen Schritt hinzufügen und beschreiben, wie Sie würden empfehlen, den js / css-Code für die Ausführung mit IIS Express in der VS2015-Umgebung anzuordnen?
Roman Pokrovskij
Wenn Sie eine bower.jsonDatei über Visual Studio 2015 erstellen, wird automatisch auch eine bowerrcDatei erstellt, die den Standardspeicherort für Bower-Installationen von bower_componentsbiswwwroot/lib
Sagebrush GIS
1
Es stellt sich also heraus, dass das Bündeln für mich sehr nützlich ist. Nachdem Sie den Standard-Bundler entfernt haben, möchte ich Bundler & Minifier empfehlen , um ihn zu ersetzen. Es verwendet den Task Runner Explorer und verfügt über eine Konfigurationsdatei ähnlich npm und bower. Es ist auch Teil von Web Essentials, sodass Sie es möglicherweise bereits installiert haben.
LavaHot
1
Hier ist ein schöner Artikel zum Thema, der mit gulp gebündelt werden kann.
LavaHot
1
Vielen Dank für die detaillierten Informationen @SagebrushGIS! Ich untersuche auch, wie ich meinem MVC-Projekt die Bower-Paketverwaltung hinzufügen kann. Ich habe die Datei bower.json über VS2015 hinzugefügt, aber die bowerrc-Datei, über die Sie sprechen, wird nicht angezeigt. Irgendwelche Schritte, die mir fehlen könnten oder wo soll ich diese Datei finden? Als Workaround verwende ich vorerst: <link rel = "stylesheet" href = "~ / bower_components / bootstrap / dist / css / bootstrap.min.css" />
Guido Kersten
4

Es ist eigentlich nicht zu unterschiedlich. Es ist nur so, dass all diese Funktionen in Visual Studio besser unterstützt werden. Wenn Sie beispielsweise neue Elemente hinzufügen, verfügen Sie über Vorlagen für Bower- oder Npm-Konfigurationsdateien. Sie haben auch Vorlagen für Gulp- oder Grunt-Konfigurationsdateien.
Das eigentliche Aufrufen von Grunz- / Schluck-Aufgaben und das Binden an Aufgaben zum Erstellen von Ereignissen erfolgt jedoch weiterhin mit dem Task Runner Explorer, genau wie in VS 2013.

Liviu Costea
quelle
Ich glaube, ich sehe immer noch nicht, wie Sie npm-Pakete in VS mit dem installierten Tool installieren. Jedes Mal, wenn ich eine .npm-Installation versuche, heißt es, dass mein Projekt nicht für Knoten oder was auch immer eingerichtet ist
Mastro
Sie müssen package.json zuerst im Stammordner erstellen lassen. Normalerweise erstelle ich das im Stammverzeichnis des Zielprojekts als Geschwister der csproj-Datei. Dann können Sie npm-Befehle verwenden
Roman