2012-01-20 11 views
5

Yürütme aksamının çalışma dizinini almak için aşağıdaki yöntemlerden hangisinin En İyi Uygulama olarak kabul edildiğine dair bir öneri var mı? Geliştiricilerimden, Yükseltilmiş izinler (Yönetici olarak Çalıştır) ile çalıştırılmadığı sürece, Yöntem 1'in Windows 7 SP1 64 bit bazen üzerinde başarısız olduğunu duyuyorum. Ama Yöntem 2 her zaman çalışır. Birincinin bazen başarısız olacağı bir sebep var mı?Environment.CurrentDirectory vs System.Reflection

Yöntem 1:

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location()) 

Yöntem 2:

Environment.CurrentDirectory 

cevap

6

Environment.CurrentDirectory işçi dizini almak için orada olduğu gibi gitmek yoludur. Yansıma kullanmak da muhtemelen daha yavaştır.

ANCAK dikkatli olun: iki yöntem aynı DEĞİLDİR: Yöntem A daima montaj Environment.CurrentDirectory olarak size uygulama ömrü boyunca değişebilir Geçerli çalışma dizini verir nerede Environment.CurrentDirectory da yapabilirsiniz, depolanan dizini döndürür Çalışma dizinini ayarlamak için kullanılır ve diğer yöntem de değiştirebilir (örneğin, dosya açma/kaydetme diyalogları).

+0

Teşekkürler! Bu oldukça iyi bir uyarıdır (sadece size oy verdim). Win 7 64-bit Sp1'de "bazen" nin başarısız olmasının bir sebebi var mı? –

+0

@RomulusParthus: Üzgünüm, bu konuda size yardımcı olamam - maybee, meclisin depolandığı yer, ama bu sadece bir vahşi tahmin ... – ChrFin

+0

teşekkürler. Telaşa gerek yok. –

İlgili konular