Untuk apa file Web.Debug.config dan Web.Release.Config?

111

Saya baru saja memutakhirkan ke Visual Studio 2010 dan MVC 2.0 dan saya melihat Web.config memiliki dua file tambahan yang menyertainya? Apakah file-file ini digunakan untuk menentukan debug dan merilis pengaturan tertentu, sehingga Anda tidak mengacaukan Web.config utama?

Apakah masuk akal untuk menempatkan string koneksi di file root Web.config jika saya memiliki string lokal dan remote di masing-masing debug dan rilis Web.configs?

Terima kasih!

chobo
sumber

Jawaban:

97

Ini adalah fitur transformasi Web.config baru dari Visual Studio 2010. Informasi lebih lanjut di sini .


Edit:

Apakah file-file ini digunakan untuk menentukan debug dan merilis pengaturan tertentu, sehingga Anda tidak mengacaukan web.config utama?

Ini tidak terbatas pada tiga file, Anda dapat (secara teori) memiliki file sebanyak yang Anda miliki. Web.config "tingkat atas" menyediakan template konfigurasi web Anda. File di bawahnya memberikan nilai pengganti khusus untuk lingkungan itu (seperti jika Anda memiliki string koneksi yang berbeda untuk lokal / stage / test / apa saja).

Apakah masuk akal untuk menempatkan string koneksi di file root web.config jika saya memiliki yang lokal dan remote di debug dan rilis web.configs masing-masing.

Ini hanya akan masuk akal jika tidak akan berubah antar lingkungan. Kedengarannya seperti dalam kasus Anda itu melakukannya, dalam kasus Anda tidak, tidak masuk akal untuk meninggalkannya di Web.config.

R0MANARMY
sumber
12
Fitur ini setengah matang, bahkan 4 tahun kemudian! Ini hanya berfungsi saat menerapkan ke paket azure / penerbitan. Berikut utas yang menarik: forums.asp.net/t/1532038.aspx
Nick
12

Ini adalah file transformasi Web.config. Dari penyebaran Web ASP.NET menggunakan Visual Studio: Transformasi File Web.config :

Ada dua cara untuk mengotomatiskan proses mengubah pengaturan file Web.config: Transformasi Web.config dan parameter Penyebaran Web. File transformasi Web.config berisi markup XML yang menentukan cara mengubah file Web.config saat digunakan. Anda dapat menentukan perubahan yang berbeda untuk konfigurasi build tertentu dan untuk profil publikasi tertentu. Konfigurasi build defaultnya adalah Debug dan Release, dan Anda dapat membuat konfigurasi build kustom. Profil publikasikan biasanya sesuai dengan lingkungan tujuan.

eKek0
sumber
1

Jika ada yang tertarik, berikut adalah sesuatu yang saya tulis untuk memiliki string koneksi dinamis per lingkungan. Saya ingin menerapkan kode ke lingkungan apa pun (Dev, Test, Pre-Prod, Prod ...) tanpa harus khawatir tentang mengubah string koneksi. Saya benar-benar tidak dapat menemukan cara yang baik untuk melakukan ini dengan Asp.Net MVC 4, jadi saya menemukan cara saya sendiri untuk mengandalkan file properti per lingkungan.

Mungkin ada solusi yang lebih baik, saya berasal dari latar belakang Wicket / Java dan baru-baru ini mulai mengembangkan dengan MVC 4 jadi, mungkin ada solusi yang lebih baik. Tapi di sini ada tautan ke pertanyaan dan jawaban saya untuk string koneksi dinamis:

Asp.net MVC 4 string koneksi dinamis

eaglei22
sumber
-3

Itu adalah sesuatu yang lama dibutuhkan di VS. Sayangnya tampaknya ada masalah dengan implementasinya. Misalnya pertimbangkan skenario ini (VS 2010 Ultimate, semua SP):

Web.Config

  • Tidak ada bagian connectionString
  • Pengguna Keanggotaan Penuh / Peran / dll. Konfigurasi penyedia menggunakan connectionStringName = "test"

Web.Release.Config

  • Tidak ada konfigurasi keanggotaan (sudah ditentukan di web.config utama)
  • bagian connectionStrings termasuk CS bernama "test"

Web.Debug.Config

  • Tidak ada konfigurasi keanggotaan (sudah ditentukan di web.config utama)
  • bagian connectionStrings termasuk CS bernama "test"

Saat menjalankan aplikasi memberikan kesalahan berikut:

'Test' nama koneksi tidak ditemukan dalam konfigurasi aplikasi atau string koneksi kosong.

Dengan kata lain, karena elemen string koneksi ada di file desainer Rilis / Debug dan digunakan oleh elemen konfigurasi di file utama (Web.config), ini tidak dapat menyelesaikannya.

Emile
sumber
5
Agar adil, jika Anda memiliki string koneksi yang dinamai testdi file debug dan rilis config, itu seharusnya hanya ada di web.config utama dengan bagian yang sesuai dengan template. Sebenarnya, Anda menduplikasi kode, yang seharusnya dipecahkan oleh template untuk Anda.
R0MANARMY
3
-1: Posting yang sangat lama ini adalah salah tafsir lengkap tentang cara menggunakan transformasi konfigurasi web. 1 Ini sebenarnya bukan jawaban (hanya keluhan yang salah) dan 2 ini bukan penggabungan elemen yang sederhana seperti yang tersirat di sini. Anda harus xsltmengganti perintah secara eksplisit . Selamat mendapatkan 5 suara positif untuk sesuatu yang menambah kebingungan tentang file transformasi ini :)
Gone Coding