Alih-alih menjalankan program eksternal dengan jalurnya hardcoded, saya ingin mendapatkan Project Dir saat ini. Saya memanggil program eksternal menggunakan proses dalam tugas kustom.
Bagaimana saya melakukannya? AppDomain.CurrentDomain.BaseDirectory hanya memberi saya lokasi VS 2008.
sumber
Jika suatu proyek berjalan pada IIS express,
Environment.CurrentDirectory
bisa menunjuk ke tempat IIS Express berada (jalur default adalah C: \ Program Files (x86) \ IIS Express ), bukan ke tempat proyek Anda berada.Ini mungkin jalur direktori yang paling cocok untuk berbagai jenis proyek.
Ini adalah definisi MSDN.
sumber
Ini juga akan memberi Anda direktori proyek dengan menavigasi dua tingkat dari direktori eksekusi saat ini (ini tidak akan mengembalikan direktori proyek untuk setiap bangunan, tetapi ini adalah yang paling umum).
Tentu saja Anda ingin memuat ini di dalam semacam logika validasi / penanganan kesalahan.
sumber
Jika Anda ingin tahu apa direktori tempat solusi Anda berada, Anda perlu melakukan ini:
Jika Anda hanya membiarkan dengan
GetCurrrentDirectory()
metode, Anda mendapatkan folder build tidak masalah jika Anda sedang debug atau melepaskan. Semoga bantuan ini! Jika Anda lupa validasi, maka akan menjadi seperti ini:sumber
Saya juga mencari ini. Saya punya proyek yang menjalankan HWC, dan saya ingin menjaga situs web dari pohon aplikasi, tetapi saya tidak ingin menyimpannya di direktori debug (atau lepaskan). FWIW, solusi yang diterima (dan yang ini juga) hanya mengidentifikasi direktori yang dapat dijalankan.
Untuk menemukan direktori itu, saya telah menggunakan
sumber
Berdasarkan jawaban Gucu112 , tetapi untuk aplikasi .NET Core Console / Window, seharusnya:
Saya menggunakan ini dalam proyek xUnit untuk .NET Core Window Application.
sumber
Cara lain untuk melakukan ini
Jika Anda ingin mendapatkan path ke folder bin
Mungkin ada cara yang lebih baik =)
sumber
Namun solusi lain yang tidak sempurna (tapi mungkin sedikit lebih dekat dengan sempurna daripada yang lain):
Versi ini akan mengembalikan folder proyek saat ini bahkan jika proyek saat ini bukan
Startup Project
untuk solusinya.Kelemahan pertama dengan ini adalah bahwa saya telah melewatkan semua pemeriksaan kesalahan. Itu bisa diperbaiki cukup mudah tetapi seharusnya hanya menjadi masalah jika Anda menyimpan proyek Anda di direktori root untuk drive atau menggunakan persimpangan di jalur Anda (dan persimpangan itu adalah turunan dari folder solusi) sehingga skenario ini tidak mungkin . Saya tidak sepenuhnya yakin bahwa Visual Studio dapat menangani salah satu dari pengaturan ini.
Masalah lain (lebih mungkin) yang mungkin Anda temui adalah bahwa nama proyek harus temui cocok dengan nama folder agar proyek dapat ditemukan.
Masalah lain yang mungkin Anda miliki adalah bahwa proyek tersebut harus berada di dalam folder solusi. Ini biasanya bukan masalah tetapi jika Anda telah menggunakan
Add Existing Project to Solution
opsi untuk menambahkan proyek ke solusi maka ini mungkin bukan cara solusi Anda diatur.Terakhir, jika aplikasi Anda akan memodifikasi direktori yang berfungsi, Anda harus menyimpan nilai ini sebelum melakukannya karena nilai ini ditentukan relatif terhadap direktori kerja saat ini.
Tentu saja, ini semua juga berarti bahwa Anda tidak boleh mengubah nilai default untuk opsi '
Build
->Output path
atauDebug
->Working directory
proyek Anda dalam dialog properti proyek.sumber
Coba ini, ini sederhana
sumber
Solusi ini bekerja dengan baik untuk saya, pada Pengembangan dan juga pada server TEST dan PROD dengan ASP.NET MVC5 melalui C # :
Jika Anda memerlukan direktori proyek dalam penggunaan file konfigurasi proyek :
sumber
Setelah saya akhirnya selesai memoles jawaban pertama saya tentang kami dari string publik untuk mendapatkan jawaban, saya sadar bahwa Anda mungkin bisa membaca nilai dari registri untuk mendapatkan hasil yang Anda inginkan. Ternyata, rute itu bahkan lebih pendek:
Pertama, Anda harus memasukkan namespace Microsoft.Win32 sehingga Anda dapat bekerja dengan registri:
Ini kode utamanya:
Catatan tentang jawaban ini:
Saya menggunakan Visual Studio 2008 Professional Edition. Jika Anda menggunakan versi lain, (yaitu 2003, 2005, 2010; dll.), Maka Anda mungkin harus memodifikasi bagian 'versi' dari string SubKey (yaitu 8.0, 7.0; dll).
Jika Anda menggunakan salah satu jawaban saya, dan jika tidak terlalu banyak bertanya, maka saya ingin tahu metode saya yang Anda gunakan dan mengapa. Semoga berhasil.
sumber
Saya memiliki situasi yang serupa, dan setelah Google tidak menghasilkan, saya mendeklarasikan string publik, yang mengubah nilai string dari jalur debug / rilis untuk mendapatkan path proyek. Manfaat menggunakan metode ini adalah karena menggunakan direktori proyek arus, tidak masalah jika Anda bekerja dari direktori debug atau direktori rilis:
Anda kemudian dapat memanggilnya kapan saja Anda mau, hanya menggunakan satu baris:
Ini seharusnya bekerja dalam banyak kasus.
sumber
Gunakan ini untuk mendapatkan direktori Proyek (berfungsi untuk saya):
sumber
sumber
Saya telah menggunakan solusi berikut untuk menyelesaikan pekerjaan:
sumber
Mencoba:
Ini adalah solusi yang berbeda dari yang lain juga memperhitungkan kemungkinan membangun x86 atau x64.
sumber
Solusi terbaik
Solusi lain
Uji, AppDomain.CurrentDomain.BaseDirectory bekerja untuk saya di proyek sebelumnya, sekarang saya mendapatkan folder debug .... jawaban BAIK yang dipilih TIDAK BEKERJA !.
sumber
Jika Anda benar-benar ingin memastikan Anda mendapatkan direktori proyek sumber, apa pun jalur keluaran bin diatur ke:
Tambahkan baris perintah acara pra-bangun (Visual Studio: Properti proyek -> Buat Acara):
echo $(MSBuildProjectDirectory) > $(MSBuildProjectDirectory)\Resources\ProjectDirectory.txt
Tambahkan
ProjectDirectory.txt
file ke Resources.resx proyek (Jika belum ada, klik kanan proyek -> Tambahkan item baru -> file Resources)Resources.ProjectDirectory
.sumber
Ini berfungsi pada konfigurasi VS2017 w / SDK Core MSBuild.
Anda perlu NuGet dalam paket EnvDTE / EnvDTE80.
Jangan gunakan COM atau interop. apapun .... sampah !!
sumber
Directory.GetParent (Directory.GetCurrentDirectory ()). Induk.Parent.Parent.Parent.FullName
Akan memberi Anda direktori proyek.
sumber