Saya memiliki dua file exe di folder yang sama, saya dapat menjalankan exe2 dari tombol di exe1. Hari ini saya mengamati pelanggan melalui sesi (layanan terminal) jarak jauh dan exe2 gagal menjalankan kesalahan 'File tidak ditemukan', namun exe1 berada di direktori yang sama ketika kami memeriksa. Jadi, apakah saya harus menggunakan AppDomain.CurrentDomain.BaseDirectory atau System.Environment.CurrentDirectory ?
Terima kasih
string.GetFullPath(path)
kegunaanEnvironment.CurrentDirectory
daripadaCurrentDomain.BaseDirectory
, saya terkejut.Jawaban:
Jika Anda ingin mencari file dalam direktori yang sama dengan aplikasi Anda, itu
AppDomain.CurrentDomain.BaseDirectory
adalah pilihan yang tepat.Environment.CurrentDirectory
adalah nilai yang dapat dan akan berubah selama menjalankan aplikasi Anda. Misalnya, dengan menggunakan parameter default, OpenFileDialog di WinForms akan mengubah nilai ini ke direktori tempat file dipilih.sumber
AppDomain.CurrentDomain.BaseDirectory
mengembalikan direktori dari mana domain aplikasi saat ini dimuat.System.Environment.CurrentDirectory
mengembalikan direktori sistem saat ini.Dalam kasus Anda
AppDomain.CurrentDomain.BaseDirectory
adalah solusi terbaik.sumber
Anda harus menggunakan
AppDomain.CurrentDomain.BaseDirectory
.Misalnya dalam aplikasi layanan windows:
System.Environment.CurrentDirectory
akan mengembalikan C: \ Windows \ system32Sementara
AppDomain.CurrentDomain.BaseDirectory
akan mengembalikan [lokasi Application.exe]Faktor penting lainnya yang perlu diperhatikan adalah
AppDomain.CurrentDomain.BaseDirectory
properti readonly sedangkanEnvironment.CurrentDirectory
dapat berupa sesuatu yang lain jika perlu:// Change the directory to AppDomain.CurrentDomain.BaseDirectory Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
sumber
Seperti yang saya pahami, Anda harus menggunakan
BaseDirectory
.CurrentDirectory
bisa berubah selama eksekusi program.sumber
Dalam proyek uji Visual studio 2010, jika Anda mengaktifkan opsi penyebaran Edit pengaturan tes, AppDomain.CurrentDomain.BaseDirectory menunjuk ke folder TestResults \ Out (bukan bin \ debug). Meskipun, pengaturan default mengarah ke folder bin \ debug.
Di sini saya menemukan jawaban yang meyakinkan.
Mengapa AppDomain.CurrentDomain.BaseDirectory tidak berisi "bin" di aplikasi asp.net?
sumber
Saya biasanya menggunakan sesuatu seperti:
string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); AppPath = AppPath.Replace("file:\\", "");
sumber
Saya juga telah melalui beberapa hari yang lalu, seperti yang saya gunakan
karena memberi saya masalah pada server produksi tetapi berfungsi dengan baik dengan server lokal saya,
Jadi, saya coba dengan
Dan itu berhasil bagi saya baik di Lingkungan.
Jadi, Seperti yang mereka semua katakan, Kita harus selalu ikut
karena memeriksa direktori Domain Saat Ini untuk jalurnya.
lihat informasi lebih lanjut
Tidak dapat menemukan bagian dari kesalahan jalur di server
sumber