Saya ingin membuat program yang mengubah file. Saya ingin pengguna dapat menempatkan file yang dapat dieksekusi di direktori mana pun, dan ketika menjalankan program itu (mengklik dua kali pada .exe) Saya ingin program memproses semua file dalam folder saat ini di mana file exe ada . Bagaimana program dapat menentukan jalur yang saat ini dijalankannya?
Saya mencoba System.Windows.Forms.Application.StartupPath
tetapi tampaknya itu cara yang salah.
Ada ide?
GetEntryAssembly
danGetExecutingAssembly
tidak terlalu mengejutkan, juga jelas dengan nama fungsinya. Jika mereka melakukan hal yang sama, mengapa harus ada dua fungsi? :-)System.Reflection.Assembly.GetExecutingAssembly().Location
lengkap - jika Anda menguji dari Window SegeraIni akan memberi Anda menjalankan direktori aplikasi Anda. Ini bahkan berfungsi untuk aplikasi web. Setelah itu Anda dapat membuka file Anda.
sumber
Saya membuat aplikasi konsol sederhana dengan kode berikut:
Saya menyalin hasil yang dapat dieksekusi ke
C:\temp2
. Saya kemudian menempatkan jalan pintas ke executable ituC:\temp3
, dan menjalankannya (sekali dari exe itu sendiri, dan sekali dari jalan pintas). Ini memberi output berikut dua kali:Sementara saya yakin pasti ada beberapa alasan cockamamie untuk menjelaskan mengapa ada lima metode yang berbeda yang melakukan hampir hal yang persis sama, saya pasti tidak tahu apa itu. Namun demikian, kelihatannya dalam sebagian besar keadaan, Anda bebas memilih mana yang Anda sukai.
UPDATE: Saya memodifikasi properti Shortcut, mengubah bidang "Mulai Di:" menjadi
C:\temp3
. Ini menghasilkan output sebagai berikut:... yang menunjukkan setidaknya beberapa perbedaan antara metode yang berbeda.
sumber
Coba ini:
System.Environment.CurrentDirectory
sumber
Environment.CurrentDirectory
dapat diubah dalam beberapa cara ... (pengaturan shotrtcut, dll)Dari
Path.GetDirectoryName
Dari
Application.ExecutablePath
sumber
Gunakan ini,
Anda dapat menggunakan ini juga.
sumber
untuk penggunaan .NET CORE
System.AppContext.BaseDirectory
(sebagai pengganti untuk
AppDomain.CurrentDomain.BaseDirectory
)sumber
1.
2.
3.
sumber
Environment.CurrentDirectory
dapat diubah dalam beberapa cara ... (pengaturan shotrtcut, dll)Gunakan
Application.StartupPath
untuk hasil imo terbaik.sumber
Jika Anda menginginkan jalur exe yang dapat Anda gunakan
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
sumber
Ini bekerja paling baik untuk saya, terutama ketika menggunakan mempublikasikan file single dotnet core.
Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
.sumber