NuGet ile ASP.NET Core'da Bootstrap'i güncellemek istiyorum. Bunu kullandım:
Install-Package bootstrap -Version 4.0.0
Bağımlılıkları ekledi ama şimdi projeme nasıl ekleyebilirim? Yerel NuGet bağımlılıklarının yolu nedir?
NuGet ile ASP.NET Core'da Bootstrap'i güncellemek istiyorum. Bunu kullandım:
Install-Package bootstrap -Version 4.0.0
Bağımlılıkları ekledi ama şimdi projeme nasıl ekleyebilirim? Yerel NuGet bağımlılıklarının yolu nedir?
Yanıtlar:
Daha önce de belirtildiği gibi, paket yöneticisi Bower gibi, genellikle istemci tarafı komut dosyalarına dayanmayan uygulamalarda bu gibi bağımlılıklar için kullanılan , çıkış yolunda ve aktif olarak diğer çözümlere geçmeyi tavsiye ediyor:
..psst! Bower bakımı yapılırken, iplik ve yapılırken , yeni ön uç projeler için web paketi !
Öyleyse, şu anda hala kullanabilseniz de, Bootstrap ayrıca bunun için desteği bırakacağını . Sonuç olarak, yerleşik ASP.NET Core şablonları da bundan uzaklaşmak için yavaşça düzenleniyor.
Ne yazık ki, ileriye dönük net bir yol yok. Bunun nedeni, web uygulamalarının sürekli olarak istemci tarafına doğru ilerlemesi, karmaşık istemci tarafı oluşturma sistemleri ve birçok bağımlılık gerektirmesidir. Öyleyse, böyle bir şey inşa ediyorsanız, bunu nasıl çözeceğinizi zaten biliyor olabilirsiniz ve mevcut inşa sürecinizi sadece Bootstrap ve jQuery'yi de içerecek şekilde genişletebilirsiniz.
Ancak, istemci tarafında o kadar ağır olmayan, uygulamanın hala esas olarak sunucuda çalıştığı ve sonuç olarak sunucunun statik görünümler sunduğu birçok web uygulaması var. Bower daha önce bunu, çok fazla işlem olmadan yalnızca istemci tarafı bağımlılıklarını yayınlamayı kolaylaştırarak doldurdu.
. Maalesef yenisiyle.csproj
biçim ve yeni NuGet ile, yüklü paketler projemizin dışında yer almaktadır, bu nedenle bunlara basitçe başvuramayız.
Bu bize bağımlılıklarımızı nasıl ekleyeceğimiz konusunda birkaç seçenek bırakır:
Tek sayfalı uygulamalar olmayan ASP.NET Core şablonlarının şu anda yaptığı şey budur. Bunları yeni bir uygulama oluşturmak için kullandığınızda, wwwroot
klasör yalnızca lib
bağımlılıkları içeren bir klasör içerir:
Şu anda dosyalara yakından bakarsanız, şablonun oluşturulması için oraya Bower ile yerleştirildiklerini görebilirsiniz, ancak bunun yakında değişmesi muhtemeldir. Temel fikir, dosyaların bir kez kopyalanmasıdır .wwwroot
klasöre böylece onlara güvenebilirsiniz.
Bunu yapmak için, Bootstrap'in tanıtımını takip edebilir ve derlenen dosyaları doğrudan indirebiliriz . İndirme sitesinde belirtildiği gibi, buna jQuery dahil değildir , bu yüzden onu da ayrıca indirmemiz gerekir; o içermiyor Popper.js biz kullanmayı tercih ederseniz olsa bootstrap.bundle
dosyayı daha sonra -ki biz yapacağız. JQuery için, indirme sitesinden tek bir "sıkıştırılmış, üretim" dosyası alabiliriz (bağlantıya sağ tıklayın ve menüden "Bağlantıyı farklı kaydet ..." seçeneğini seçin).
Bu, bize basitçe ayıklayıp wwwroot
klasöre kopyalayacak birkaç dosya bırakır . Ayrıca lib
, bunların harici bağımlılıklar olduğunu daha net hale getirmek için bir klasör oluşturabiliriz:
Tek ihtiyacımız olan bu, bu yüzden şimdi _Layout.cshtml
dosyamızı bu bağımlılıkları içerecek şekilde ayarlamamız gerekiyor . Bunun için aşağıdaki bloğu ekliyoruz <head>
:
<environment include="Development">
<link rel="stylesheet" href="~/lib/css/bootstrap.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="~/lib/css/bootstrap.min.css" />
</environment>
Ve en sonunda aşağıdaki blok <body>
:
<environment include="Development">
<script src="~/lib/js/jquery-3.3.1.js"></script>
<script src="~/lib/js/bootstrap.bundle.js"></script>
</environment>
<environment exclude="Development">
<script src="~/lib/js/jquery-3.3.1.min.js"></script>
<script src="~/lib/js/bootstrap.bundle.min.js"></script>
</environment>
Ayrıca küçültülmüş sürümleri dahil edebilir ve <environment>
biraz daha basit hale getirmek için buradaki etiket yardımcılarını atlayabilirsiniz . Ama başlamanız için yapmanız gereken tek şey bu.
Daha modern yol, bağımlılıklarınızı güncel tutmak istiyorsanız, bağımlılıkları NPM paket deposundan almak olacaktır. Bunun için NPM veya İplik kullanabilirsiniz; benim örneğimde NPM kullanacağım.
Başlamak package.json
için, bağımlılıklarımızı belirtebilmemiz için projemiz için bir dosya oluşturmamız gerekiyor . Bunu yapmak için, bunu "Yeni Öğe Ekle" iletişim kutusundan yapıyoruz:
Buna sahip olduğumuzda, bağımlılıklarımızı içerecek şekilde düzenlememiz gerekir. Bunun gibi bir şey görünmeli:
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"bootstrap": "4.0.0",
"jquery": "3.3.1",
"popper.js": "1.12.9"
}
}
Kaydederek, Visual Studio bağımlılıkları bizim için yüklemek için zaten NPM'yi çalıştıracaktır. node_modules
Klasöre yüklenecekler . Öyleyse yapılacak şey, dosyaları oradan wwwroot
klasörümüze almak. Bunu yapmak için birkaç seçenek var:
bundleconfig.json
paketleme ve küçültme içinBelgelerdebundleconfig.json
açıklandığı gibi, paket ve küçültme için a tüketmenin çeşitli yollarından birini kullanabiliriz . Çok kolay bir yol, bunun için otomatik olarak bir derleme görevi ayarlayan BuildBundlerMinifier NuGet paketini kullanmaktır .
Bu paketi kurduktan sonra bundleconfig.json
, projenin kökünde aşağıdaki içeriklerle bir oluşturmamız gerekiyor :
[
{
"outputFileName": "wwwroot/vendor.min.css",
"inputFiles": [
"node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"minify": { "enabled": false }
},
{
"outputFileName": "wwwroot/vendor.min.js",
"inputFiles": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/popper.js/dist/umd/popper.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js"
],
"minify": { "enabled": false }
}
]
Bu temelde hangi dosyaların neyle birleştirileceğini yapılandırır. Ve inşa ettiğimizde, vendor.min.css
ve vendor.js.css
doğru yaratıldığını görebiliriz . Bu yüzden tek yapmamız gereken _Layouts.html
, bu dosyaları içerecek şekilde yeniden ayarlamak :
<!-- inside <head> -->
<link rel="stylesheet" href="~/vendor.min.css" />
<!-- at the end of <body> -->
<script src="~/vendor.min.js"></script>
Biraz daha istemci tarafı geliştirmeye geçmek istersek, orada kullanacağımız araçları da kullanmaya başlayabiliriz. Örneğin , gerçekten her şey için çok yaygın olarak kullanılan bir oluşturma aracı olan Webpack . Ancak Gulp gibi daha basit bir görev yöneticisiyle başlayabilir ve gerekli birkaç adımı kendimiz yapabiliriz.
Bunun için gulpfile.js
proje kökümüze aşağıdaki içeriklerle a ekliyoruz :
const gulp = require('gulp');
const concat = require('gulp-concat');
const vendorStyles = [
"node_modules/bootstrap/dist/css/bootstrap.min.css"
];
const vendorScripts = [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/popper.js/dist/umd/popper.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js",
];
gulp.task('build-vendor-css', () => {
return gulp.src(vendorStyles)
.pipe(concat('vendor.min.css'))
.pipe(gulp.dest('wwwroot'));
});
gulp.task('build-vendor-js', () => {
return gulp.src(vendorScripts)
.pipe(concat('vendor.min.js'))
.pipe(gulp.dest('wwwroot'));
});
gulp.task('build-vendor', gulp.parallel('build-vendor-css', 'build-vendor-js'));
gulp.task('default', gulp.series('build-vendor'));
Şimdi, ayrıca package.json
bağımlılıklarımızı ayarlamamız gerekiyor gulp
ve gulp-concat
:
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"bootstrap": "4.0.0",
"gulp": "^4.0.2",
"gulp-concat": "^2.6.1",
"jquery": "3.3.1",
"popper.js": "1.12.9"
}
}
Son olarak, .csproj
projemizi oluşturduğumuzda Gulp görevimizin çalıştığından emin olmak için aşağıdaki görevi eklemek için düzenledik :
<Target Name="RunGulp" BeforeTargets="Build">
<Exec Command="node_modules\.bin\gulp.cmd" />
</Target>
Şimdi, inşa ettiğimizde, default
Gulp görevi çalışır, build-vendor
görevleri çalıştırır ve daha sonra bizim vendor.min.css
ve vendor.min.js
daha önce yaptığımız gibi oluşturur . Yani _Layout.cshtml
aynen yukarıdaki gibi ayarladıktan sonra jQuery ve Bootstrap'ı kullanabiliriz.
Gulp'un ilk kurulumu bundleconfig.json
yukarıdakinden biraz daha karmaşık olsa da , şimdi Düğüm dünyasına girdik ve oradaki diğer tüm harika araçları kullanmaya başlayabiliriz. Öyleyse bununla başlamaya değer olabilir.
Bu, birdenbire Bower'ı kullanmaktan çok daha karmaşık hale gelse de, bu yeni seçeneklerle çok fazla kontrole sahip oluyoruz. Örneğin, artık wwwroot
klasörün içinde gerçekte hangi dosyaların bulunduğuna ve bunların tam olarak nasıl göründüğüne karar verebiliriz . Ayrıca bunu, en azından öğrenme eğrisine biraz yardımcı olması gereken Node ile istemci tarafı geliştirme dünyasına ilk hamleleri yapmak için de kullanabiliriz .
node -v
ve güncel bir sürümünü almak buraya nodejs.org üzerinde
Buna bakıldığında, LibMan yaklaşımı, Bootstrap ekleyerek ihtiyaçlarım için en iyi şekilde çalışıyor gibi görünüyor. Bunu beğendim çünkü artık Visual Studio 2017'de (15.8 veya üzeri) yerleşik ve kendi iletişim kutuları var.
Güncelleme 6/11/2020: bootstrap 4.1.3 artık VS-2019.5 ile varsayılan olarak eklenmiştir (Fark ettiği için Harald S. Hanssen'e teşekkürler.)
VS'nin projelere eklediği varsayılan yöntem, Bower kullanır, ancak çıkış yolunda gibi görünür. Microsofts bower sayfasının başlığında şöyle yazıyorlar:
Birkaç bağlantılar yol takip Visual Studio ASP.NET Core Kullanım Libman nerede gösterir kütüphanelerini kullanılarak eklenebilir nasıl yerleşik bir Dialog:
Solution Explorer'da, dosyaların eklenmesi gereken proje klasörüne sağ tıklayın. Ekle> İstemci Tarafı Kitaplığı'nı seçin. İstemci Tarafı Kitaplığı Ekle iletişim kutusu görüntülenir: [kaynak: Scott Addie 2018 ]
Sonra bootstrap için sadece (1) Unpkg seçin, (2) "bootstrap @ .." (3) Install yazın. Bundan sonra, yalnızca _Layout.cshtml veya diğer yerlerdeki tüm içerilenlerin doğru olduğunu doğrulamak istersiniz. Onlar gibi bir şey olmalı "... ~ / lib / önyükleme / dist / js / bootstrap" href = )
Libman'ı deneyin , Bower kadar basittir ve indirme klasörü olarak wwwroot / lib / belirleyebilirsiniz.
Benim için püf noktası nedir:
1) wwwroot> Ekle> İstemci Tarafı Kitaplığı'na sağ tıklayın
2) Arama kutusuna "bootstrap" yazın
3) "Belirli dosyaları seç" i seçin
4) Aşağı kaydırın ve bir klasör seçin. Benim durumumda "twitter-bootstrap" i seçtim
5) "css" ve "js" yi kontrol edin
6) "Yükle" yi tıklayın.
Birkaç saniye sonra hepsine wwwroot klasörüne sahibim. Eklemek istediğiniz tüm istemci tarafı paketleri için aynısını yapın.
Libman artık Microsoft tarafından tercih edilen bir araç gibi görünüyor. Visual Studio 2017 (15.8) ile tümleşiktir.
Bu makale nasıl kullanılacağını ve hatta derleme işlemi tarafından gerçekleştirilen bir geri yüklemenin nasıl ayarlanacağını açıklar.
Bootstrap'in belgeleri , projenizde hangi dosyalara ihtiyacınız olduğunu size söyler.
Aşağıdaki örnek, libman.json için bir yapılandırma olarak çalışmalıdır.
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"library": "twitter-bootstrap@4.2.1",
"destination": "wwwroot/lib/bootstrap",
"files": [
"js/bootstrap.bundle.js",
"css/bootstrap.min.css"
]
},
{
"library": "jquery@3.3.1",
"destination": "wwwroot/lib/jquery",
"files": [
"jquery.min.js"
]
}
]
}
Asp.net çekirdeğinde bootstrap 4 kullanıyoruz, ancak "Paket Yükleyici" uzantısını kullanarak "npm" deki kitaplıklara başvuruyoruz ve bunun Javascript / CSS kitaplıkları için Nuget'ten daha iyi olduğunu gördük.
Daha sonra, dağıtım için ilgili dosyaları (projenin dışında bulunan npm node_modules klasöründen) geliştirme / dağıtım için istediğimiz şekilde wwwroot'a kopyalamak için "Bundler & Minifier" uzantısını kullanıyoruz.
Ne yazık ki, bir .NET Core projesine Bootstrap'i (veya diğer birçok JavaScript / CSS çerçevesini) yüklemek için NuGet'i kullanırken zorlanacaksınız. NuGet kurulumuna bakarsanız, uyumsuz olduğunu söyler:
yerel paket bağımlılıklarının nerede olduğunu bilmeniz gerekiyorsa, bunlar artık yerel profil dizininizdedir. yani %userprofile%\.nuget\packages\bootstrap\4.0.0\content\Scripts
.
Bununla birlikte, Saineshwar'ın cevabında olduğu gibi npm veya bower'a geçmenizi öneririm.
BS4 artık .NET Core 2.2'de mevcuttur . Kesinlikle SDK 2.2.105 x64 yükleyicide. Bununla birlikte Visual Studio 2017 çalıştırıyorum. Şimdiye kadar yeni web uygulama projeleri için çok iyi.
Neden sadece bir CDN kullanmıyorsunuz? BS kodunu düzenlemeniz gerekmedikçe, sadece CDN'deki kodlara başvurmanız gerekir.
BS 4 CDN'ye Bakın:
https://www.w3schools.com/bootstrap4/bootstrap_get_started.asp
Sayfanın sonunda.
Nmp yapılandırma dosyasını kullanın (web projenize ekleyin) ardından gerekli paketleri bower.json kullanarak yaptığımız gibi ekleyin ve kaydedin. Visual studio indirip kuracaktır. Paketi, projenizin nmp düğümünün altında bulacaksınız.