Saya mencoba menyelesaikan penangan pengecualian ini:
if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null)
{
string pathOfActiveConfigFile = ...?
throw new ConfigurationErrorsException(
"You either forgot to set the connection string, or " +
"you're using a unit test framework that looks for "+
"the config file in strange places, update this file : "
+ pathOfActiveConfigFile);
}
Masalah ini sepertinya hanya terjadi pada saya ketika saya menggunakan nUnit.
c#
.net
nunit
app-config
configurationmanager
MatthewMartin
sumber
sumber
Sebenarnya, tidak ada file konfigurasi tunggal. Tidak termasuk ASP.NET 1 dapat ada tiga file konfigurasi menggunakan dukungan inbuilt (
System.Configuration
). Selain konfigurasi mesin:,app.exe.config
pengguna roaming, dan pengguna lokal.Untuk mendapatkan konfigurasi "global" ( exe .config):
Gunakan
ConfigurationUserLevel
nilai yang berbeda untuk file konfigurasi roaming dan non-roaming per penggunaan.1 Yang memiliki model yang sama sekali berbeda di mana konten folder anak (IIS-virtual atau sistem file)
web.config
dapat (tergantung pada pengaturan) menambah atau menimpa orangtuaweb.config
.sumber
Jika Anda maksudnya Anda hanya mendapatkan pengembalian nol ketika Anda menggunakan NUnit, maka Anda mungkin perlu menyalin nilai ConnectionString app.config aplikasi Anda ke app.config perpustakaan tes Anda.
Ketika dijalankan oleh loader tes, unit uji dimuat saat runtime dan akan mencari di app.config sendiri (diganti namanya menjadi testAssembly.dll.config pada waktu kompilasi) daripada aplikasi Anda mengkonfigurasi file.
Untuk mendapatkan lokasi perakitan yang Anda jalankan, coba
sumber
Pastikan Anda mengklik properti pada file dan mengaturnya untuk "salin selalu" atau itu tidak akan berada di folder Debug \ dengan dll bahagia lil Anda untuk mengkonfigurasi di mana perlu dan menambahkan lebih banyak cowbell
sumber
Pertama kali saya menyadari bahwa proyek pengujian Unit mereferensikan app.config dalam proyek itu daripada app.config yang terkait dengan proyek kode produksi saya (tentu saja, DOH) Saya baru saja menambahkan baris dalam Acara Pasca Bangun proyek Prod. yang akan menyalin app.config ke folder bin proyek uji.
Masalah terpecahkan
Saya belum melihat adanya efek samping yang aneh sejauh ini, tetapi saya tidak yakin bahwa ini adalah solusi yang tepat, tetapi setidaknya tampaknya berhasil.
sumber
Satu lagi opsi yang saya lihat tidak ada di sini:
sumber
Tergantung pada lokasi file konfigurasi Anda
System.Reflection.Assembly.GetExecutingAssembly().Location
mungkin melakukan apa yang Anda butuhkan.sumber
Saya mencoba salah satu jawaban sebelumnya di aplikasi web (sebenarnya peran web Azure berjalan secara lokal) dan itu tidak berhasil. Namun, pendekatan serupa ini berhasil:
File config ternyata berada di C: \ Program Files \ IIS Express \ MyComponent.dll.config. Tempat menarik untuk itu.
sumber