Ich möchte Bootstrap in ASP.NET Core mit NuGet aktualisieren. Ich habe das benutzt:
Install-Package bootstrap -Version 4.0.0
Die Abhängigkeiten wurden hinzugefügt, aber wie füge ich sie jetzt meinem Projekt hinzu? Was ist der Pfad für lokale NuGet-Abhängigkeiten?
.net
asp.net-core
nuget
bootstrap-4
asp.net-core-2.0
Entwickler
quelle
quelle
Antworten:
Wie bereits erwähnt, ist der Paketmanager Bower , der normalerweise für solche Abhängigkeiten in Anwendungen verwendet wurde, die nicht auf umfangreichen clientseitigen Skripten basieren, auf dem Weg nach draußen und empfiehlt aktiv, auf andere Lösungen umzusteigen:
Obwohl Sie es jetzt noch verwenden können, hat Bootstrap auch angekündigt, die Unterstützung dafür einzustellen . Infolgedessen werden die integrierten ASP.NET Core-Vorlagen langsam bearbeitet, um sich auch davon zu entfernen.
Leider gibt es keinen klaren Weg vorwärts. Dies ist hauptsächlich auf die Tatsache zurückzuführen, dass Webanwendungen kontinuierlich weiter in die Clientseite verlagert werden und komplexe clientseitige Build-Systeme und viele Abhängigkeiten erfordern. Wenn Sie also so etwas erstellen, wissen Sie möglicherweise bereits, wie Sie dies lösen können, und Sie können Ihren vorhandenen Erstellungsprozess erweitern, um dort einfach auch Bootstrap und jQuery einzuschließen.
Es gibt jedoch immer noch viele Webanwendungen, die auf der Clientseite nicht so schwer sind, wobei die Anwendung immer noch hauptsächlich auf dem Server ausgeführt wird und der Server daher statische Ansichten bereitstellt. Bower hat dies zuvor gefüllt, indem es einfach gemacht wurde, clientseitige Abhängigkeiten ohne großen Aufwand zu veröffentlichen.
In der .NET-Welt haben wir auch NuGet und mit früheren ASP.NET-Versionen könnten wir NuGet auch verwenden, um einigen clientseitigen Abhängigkeiten Abhängigkeiten hinzuzufügen, da NuGet den Inhalt nur korrekt in unser Projekt einfügt. Leider
.csproj
befinden sich die installierten Pakete mit dem neuen Format und dem neuen NuGet außerhalb unseres Projekts, sodass wir nicht einfach auf diese verweisen können.Dies lässt uns einige Optionen, wie wir unsere Abhängigkeiten hinzufügen können:
Einmalige Installation
Dies tun derzeit die ASP.NET Core-Vorlagen, bei denen es sich nicht um einseitige Anwendungen handelt. Wenn Sie diese zum Erstellen einer neuen Anwendung verwenden,
wwwroot
enthält der Ordner einfach einen Ordnerlib
, der die Abhängigkeiten enthält:Wenn Sie sich die aktuellen Dateien genau ansehen, können Sie sehen, dass sie ursprünglich bei Bower abgelegt wurden, um die Vorlage zu erstellen. Dies wird sich jedoch wahrscheinlich bald ändern. Die Grundidee ist, dass die Dateien einmal in den
wwwroot
Ordner kopiert werden , damit Sie sich darauf verlassen können.Dazu können wir einfach der Einführung von Bootstrap folgen und die kompilierten Dateien direkt herunterladen . Wie auf der Download-Site erwähnt, beinhaltet dies nicht jQuery , daher müssen wir dies auch separat herunterladen. Es enthält jedoch Popper.js, wenn wir die
bootstrap.bundle
Datei später verwenden - was wir auch tun werden. Für jQuery können wir einfach eine einzelne "komprimierte Produktionsdatei" von der Download-Site abrufen (klicken Sie mit der rechten Maustaste auf den Link und wählen Sie "Link speichern unter ..." aus dem Menü).So bleiben uns einige Dateien, die einfach extrahiert und in den
wwwroot
Ordner kopiert werden . Wir können auch einenlib
Ordner erstellen, um klarer zu machen, dass es sich um externe Abhängigkeiten handelt:Das ist alles, was wir brauchen. Jetzt müssen wir nur noch unsere
_Layout.cshtml
Datei anpassen , um diese Abhängigkeiten einzuschließen. Dazu fügen wir dem folgenden Block hinzu<head>
:Und der folgende Block ganz am Ende des
<body>
:Sie können auch einfach die minimierten Versionen einfügen und die
<environment>
Tag-Helfer hier überspringen , um es ein bisschen einfacher zu machen. Aber das ist alles, was Sie tun müssen, um am Start zu bleiben.Abhängigkeiten von NPM
Der modernere Weg, auch wenn Sie Ihre Abhängigkeiten auf dem neuesten Stand halten möchten, besteht darin, die Abhängigkeiten aus dem NPM-Paket-Repository abzurufen. Sie können hierfür entweder NPM oder Garn verwenden. In meinem Beispiel verwende ich NPM.
Zu Beginn müssen wir eine
package.json
Datei für unser Projekt erstellen , damit wir unsere Abhängigkeiten angeben können. Dazu tun wir dies einfach im Dialogfeld "Neues Element hinzufügen":Sobald wir das haben, müssen wir es bearbeiten, um unsere Abhängigkeiten einzuschließen. Es sollte ungefähr so aussehen:
Durch das Speichern führt Visual Studio bereits NPM aus, um die Abhängigkeiten für uns zu installieren. Sie werden im
node_modules
Ordner installiert . Was also noch zu tun bleibt, ist, die Dateien von dort in unserenwwwroot
Ordner zu bekommen. Dafür gibt es einige Möglichkeiten:bundleconfig.json
zur Bündelung und MinimierungWir können eine der verschiedenen Möglichkeiten verwenden, um a
bundleconfig.json
zum Bündeln und Minimieren zu verwenden, wie in der Dokumentation erläutert . Eine sehr einfache Möglichkeit besteht darin, einfach das NuGet-Paket BuildBundlerMinifier zu verwenden, mit dem automatisch eine Build-Aufgabe dafür eingerichtet wird.Nach der Installation dieses Pakets müssen wir eine
bundleconfig.json
im Stammverzeichnis des Projekts mit den folgenden Inhalten erstellen :Dadurch wird grundsätzlich konfiguriert, welche Dateien zu welchen kombiniert werden sollen. Und wenn wir bauen, können wir sehen, dass die
vendor.min.css
undvendor.js.css
richtig erstellt werden. Alles, was wir tun müssen, ist, unsere_Layouts.html
erneut anzupassen , um diese Dateien einzuschließen:Verwenden eines Task-Managers wie Gulp
Wenn wir uns ein bisschen mehr mit der clientseitigen Entwicklung befassen möchten, können wir auch damit beginnen, Tools zu verwenden, die wir dort verwenden würden. Zum Beispiel Webpack , ein sehr häufig verwendetes Build-Tool für wirklich alles. Wir können aber auch mit einem einfacheren Task-Manager wie Gulp beginnen und die wenigen notwendigen Schritte selbst ausführen.
Dazu fügen wir
gulpfile.js
unserem Projektstamm ein mit folgenden Inhalten hinzu:Jetzt müssen wir auch unsere anpassen
package.json
, um Abhängigkeiten vongulp
und zu habengulp-concat
:Schließlich bearbeiten wir unsere
.csproj
, um die folgende Aufgabe hinzuzufügen, die sicherstellt, dass unsere Gulp-Aufgabe beim Erstellen des Projekts ausgeführt wird:Wenn wir jetzt erstellen, wird die
default
Gulp-Aufgabe ausgeführt, die diebuild-vendor
Aufgaben ausführt , die dann unsere erstelltvendor.min.css
undvendor.min.js
genau wie zuvor. Nachdem_Layout.cshtml
wir unsere Einstellungen wie oben beschrieben vorgenommen haben, können wir jQuery und Bootstrap verwenden.Während die anfängliche Einrichtung von Gulp etwas komplizierter ist als die
bundleconfig.json
oben beschriebene, haben wir jetzt die Node-Welt betreten und können beginnen, alle anderen coolen Tools dort zu nutzen. Es könnte sich also lohnen, damit zu beginnen.Fazit
Während dies plötzlich viel komplizierter wurde als nur mit Bower, gewinnen wir mit diesen neuen Optionen auch viel Kontrolle. Zum Beispiel können wir jetzt entscheiden, welche Dateien tatsächlich im
wwwroot
Ordner enthalten sind und wie diese genau aussehen. Und wir können dies auch nutzen, um mit Node die ersten Schritte in die clientseitige Entwicklungswelt zu unternehmen, die zumindest ein wenig bei der Lernkurve helfen sollten .quelle
node -v
und eine aktuelle Version hier auf nodejs.org abrufenIn diesem Zusammenhang scheint der LibMan-Ansatz für das Hinzufügen von Bootstrap am besten für meine Anforderungen geeignet zu sein. Ich mag es, weil es jetzt in Visual Studio 2017 (15.8 oder höher) integriert ist und eigene Dialogfelder hat.
Update 6/11/2020: Bootstrap 4.1.3 wird jetzt standardmäßig mit VS-2019.5 hinzugefügt (Dank an Harald S. Hanssen für die Benachrichtigung.)
Die Standardmethode, die VS zu Projekten hinzufügt, verwendet Bower, aber es sieht so aus, als ob es auf dem Weg nach draußen ist. In die Kopfzeile der Microsoft- Laubseite schreiben sie:
Das Folgen einiger Links führt zur Verwendung von LibMan mit ASP.NET Core in Visual Studio, wo gezeigt wird, wie Bibliotheken mithilfe eines integrierten Dialogfelds hinzugefügt werden können:
Dann für Bootstrap einfach (1) das Unpkg auswählen, (2) "bootstrap @ .." eingeben. (3) Installieren. Danach möchten Sie nur noch überprüfen, ob alle Includes in der Datei _Layout.cshtml oder an anderen Stellen korrekt sind. Sie sollten so etwas wie href = "~ / lib / Bootstrap / dist / js / Bootstrap ..." )
quelle
Probieren Sie Libman aus , es ist so einfach wie Bower und Sie können wwwroot / lib / als Download-Ordner angeben.
quelle
Was macht der Trick für mich:
1) Klicken Sie mit der rechten Maustaste auf wwwroot> Hinzufügen> Client Side Library
2) Geben Sie "bootstrap" in das Suchfeld ein
3) Wählen Sie "Bestimmte Dateien auswählen".
4) Scrollen Sie nach unten und wählen Sie einen Ordner aus. In meinem Fall habe ich "Twitter-Bootstrap" gewählt
5) Überprüfen Sie "css" und "js"
6) Klicken Sie auf "Installieren".
Ein paar Sekunden später habe ich alle wwwroot Ordner. Machen Sie dasselbe für alle clientseitigen Pakete, die Sie hinzufügen möchten.
quelle
Libman scheint das derzeit von Microsoft bevorzugte Tool zu sein. Es ist in Visual Studio 2017 (15.8) integriert.
In diesem Artikel wird beschrieben, wie Sie es verwenden und sogar eine vom Erstellungsprozess durchgeführte Wiederherstellung einrichten.
In der Bootstrap-Dokumentation erfahren Sie, welche Dateien Sie in Ihrem Projekt benötigen.
Das folgende Beispiel sollte als Konfiguration für libman.json funktionieren.
}}
quelle
Wir verwenden Bootstrap 4 im asp.net-Kern, verweisen jedoch mit der Erweiterung "Package Installer" auf die Bibliotheken von "npm" und stellen fest, dass dies besser ist als Nuget für Javascript / CSS-Bibliotheken.
Wir verwenden dann die Erweiterung "Bundler & Minifier", um die relevanten Dateien für die Verteilung (aus dem Ordner npm node_modules, der sich außerhalb des Projekts befindet) nach Belieben in wwwroot für die Entwicklung / Bereitstellung zu kopieren.
quelle
Leider fällt es Ihnen schwer, mit NuGet Bootstrap (oder die meisten anderen JavaScript / CSS-Frameworks) in einem .NET Core-Projekt zu installieren. Wenn Sie sich die NuGet-Installation ansehen, werden Sie darauf hingewiesen, dass sie nicht kompatibel ist:
Wenn Sie wissen müssen, wo sich lokale Paketabhängigkeiten befinden, befinden sie sich jetzt in Ihrem lokalen Profilverzeichnis. dh
%userprofile%\.nuget\packages\bootstrap\4.0.0\content\Scripts
.Ich schlage jedoch vor, zu npm oder bower zu wechseln - wie in Saineshwars Antwort.
quelle
BS4 ist jetzt unter .NET Core 2.2 verfügbar . Auf dem SDK 2.2.105 x64-Installationsprogramm sicher. Ich verwende Visual Studio 2017 damit. So weit so gut für neue Webanwendungsprojekte.
quelle
Warum nicht einfach ein CDN verwenden? Wenn Sie den Code von BS nicht bearbeiten müssen, müssen Sie nur auf die Codes in CDN verweisen.
Siehe BS 4 CDN hier:
https://www.w3schools.com/bootstrap4/bootstrap_get_started.asp
Am Ende der Seite.
quelle
Verwenden Sie die nmp-Konfigurationsdatei (fügen Sie sie Ihrem Webprojekt hinzu) und fügen Sie dann die erforderlichen Pakete auf die gleiche Weise hinzu, wie wir es mit bower.json getan haben, und speichern Sie sie. Visual Studio wird es herunterladen und installieren. Sie finden das Paket unter dem NMP-Knoten Ihres Projekts.
quelle