ketika saya mempublikasikan aplikasi web inti asp.net saya ke sistem file lokal saya, itu selalu membutuhkan produksi-config dan variabel ASPNETCORE_ENVIRONMENT dengan nilai = "Produksi".
bagaimana dan di mana saya harus menetapkan nilai variabel ASPNETCORE_ENVIRONMENT sehingga akan dianggap tidak hanya untuk debugging, tetapi juga untuk penerbitan ? saya sudah mencoba opsi berikut tanpa hasil:
- dalam pengaturan windows
- dalam file .pubxml
- di launchSettings.json
- di project.json
Jawaban:
Selain opsi yang disebutkan di atas, ada beberapa Solusi lain.
1. Memodifikasi file proyek (.CsProj) file
MSBuild mendukung
EnvironmentName
Properti yang dapat membantu mengatur variabel lingkungan yang tepat sesuai Lingkungan yang ingin Anda Terapkan. Nama lingkungan akan ditambahkan di web.config selama fase Publikasikan.Cukup buka file proyek (* .csProj) dan tambahkan XML berikut.
Kode di atas akan menambahkan nama lingkungan seperti
Development
untuk konfigurasi Debug atau jika tidak ada konfigurasi yang ditentukan. Untuk Konfigurasi lainnya, nama Lingkungan akan adaProduction
di file web.config yang dihasilkan. Lebih lengkapnya di sini2. Menambahkan Properti EnvironmentName di profil publikasikan.
Kami juga dapat menambahkan
<EnvironmentName>
properti di profil terbitkan. Buka file profil terbitkan yang terletak diProperties/PublishProfiles/{profilename.pubxml}
Ini akan menetapkan nama Lingkungan di web.config ketika proyek diterbitkan. Lebih jelasnya di sini3. Opsi baris perintah menggunakan dotnet publish
Selain itu, kita dapat meneruskan properti
EnvironmentName
sebagai opsi baris perintah kedotnet publish
perintah. Perintah berikut akan menyertakan variabel lingkungan sepertiDevelopment
pada file web.config.dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
sumber
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development
persis seperti yang saya cari. Terima kasih!Pilihan 1:
Untuk mengatur variabel lingkungan ASPNETCORE_ENVIRONMENT di windows,
Garis komando -
setx ASPNETCORE_ENVIRONMENT "Development"
PowerShell -
$Env:ASPNETCORE_ENVIRONMENT = "Development"
Untuk OS lain lihat ini - https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
Pilihan 2:
Jika Anda ingin menyetel ASPNETCORE_ENVIRONMENT menggunakan
web.config
lalu tambahkanaspNetCore
seperti ini-sumber
Cara sederhana untuk mengaturnya di IDE studio visual.
Proyek> Properti> Debug> Variabel lingkungan
sumber
Anda harus mengikuti instruksi yang disediakan dalam dokumentasi , menggunakan
web.config
.Perhatikan bahwa Anda juga dapat menyetel variabel lingkungan lainnya.
sumber
Beginilah cara kita mengatur waktu berjalan:
sumber
Buat pengaturan aplikasi Anda. *. File json. (Contoh: appsettings.Development.json, appsettings.Staging.json, appsettings.Production.json)
Tambahkan variabel Anda ke file tersebut.
Buat profil terbitkan terpisah untuk setiap lingkungan, seperti yang biasa Anda lakukan.
Buka PublishProfiles / Development.pubxml (penamaan akan didasarkan pada apa yang Anda beri nama Publish Profile).
Cukup tambahkan tag ke PublishProfile untuk menyetel variabel EnvironmentName , selebihnya adalah konvensi penamaan file appsettings. *. Json.
Referensi: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-3.1
Lihat bagian "Mengatur Lingkungan".
sumber
Dengan versi terbaru dotnet cli (2.1.400 atau yang lebih baru), Anda cukup menyetel properti msbuild ini
$(EnvironmentName)
dan mempublikasikan perkakas akan menangani penambahan ASPNETCORE_ENVIRONMENT ke web.config dengan nama lingkungan.Juga, dukungan XDT tersedia mulai 2.2.100-preview1.
Contoh: https://github.com/vijayrkn/webconfigtransform/blob/master/README.md
sumber
you can just set this msbuild property $(EnvironmentName) and publish
atau memberikan referensi?Variabel ini dapat disimpan di json. Misalnya envsettings.json dengan konten seperti di bawah ini
Kemudian ubah program.cs Anda seperti di bawah ini
Dengan cara ini, itu akan selalu disertakan dalam publikasi dan Anda dapat mengubah nilai yang diperlukan sesuai dengan lingkungan tempat situs web dihosting. Metode ini juga dapat digunakan di aplikasi konsol karena perubahannya ada di Program.cs
sumber
Saya menemukan itu berfungsi untuk saya dengan mengatur variabel ini langsung di Azure platorm (jika Anda menggunakannya). Cukup pilih aplikasi web Anda -> konfigurasi -> pengaturan aplikasi dan tambahkan variabel dan nilainya, lalu tekan tombol Simpan.
sumber
Opsi lain yang kami gunakan dalam proyek kami agar dapat mengatur lingkungan per situs adalah dengan menambahkan file Parameters.xml ke proyek dengan konten berikut:
Build Action untuk file ini adalah Content dan Copy Action adalah Copy If Newer sehingga itu akan menjadi bagian dari paket untuk disebarkan.
Kemudian, untuk menyebarkan paket dan mengatur lingkungan, dalam Rilis, di bawah tugas "WinRM - IIS Web App Deployment" (ini bekerja dengan baik saat menggunakan "IIS web app menyebarkan" tugas), kami menetapkan argumen tambahan untuk msdeploy :
Dengan cara ini kita dapat memiliki beberapa rilis, semua menggunakan artefak yang sama, tetapi diterapkan sebagai lingkungan yang berbeda.
sumber
Saya tahu ini adalah posting lama tetapi saya pikir saya akan memasukkan solusi sederhana saya ke dalam campuran karena tidak ada yang menyarankannya.
Saya menggunakan direktori saat ini untuk menentukan lingkungan saat ini kemudian membalik string koneksi dan variabel lingkungan. Ini berfungsi dengan baik selama Anda memiliki konvensi penamaan untuk folder situs Anda seperti test / beta / sandbox.
sumber