Uygulama klasörü yolunu almanın en iyi yolu

Uygulama klasörü yolunu elde etmenin bazı yolları olduğunu görüyorum:

  1. Application.StartupPath
  2. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)
  3. AppDomain.CurrentDomain.BaseDirectory
  4. System.IO.Directory.GetCurrentDirectory()
  5. Environment.CurrentDirectory
  6. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
  7. System.IO.Path.GetDirectory(Application.ExecutablePath)

Duruma bağlı olarak en iyi yol nedir?

Çözüm

AppDomain.CurrentDomain.BaseDirectory muhtemelen konumu uygulama yükleme dizinine göre olan dosyalara erişmek için en kullanışlı olanıdır.

Bir ASP.NET uygulamasında bu, bin alt klasörü değil, uygulama kök dizini olacaktır - ki muhtemelen genellikle istediğiniz de budur. Bir istemci uygulamasında, ana çalıştırılabilir dosyayı içeren dizin olacaktır.

Bir VSTO 2005 uygulamasında bu, örneğin Excel çalıştırılabilir dosyasının yolu değil, uygulamanız için VSTO yönetilen derlemelerini içeren dizin olacaktır.

Diğerleri ortamınıza bağlı olarak farklı dizinler döndürebilir - örneğin @Vimvq1987'nin yanıtına bakın.

CodeBasebir dosyanın bulunduğu yerdir ve http:// ile başlayan bir URL olabilir. Bu durumdaLocationmuhtemelen montaj indirme önbelleği olacaktır. CodeBasein GAC içindeki derlemeler için ayarlanması garanti edilmez.

Yorumlar (10)

Bu yöntemlerin hepsinin aynı değeri döndürmeyeceğini unutmayın. Bazı durumlarda aynı değeri döndürebilirler, ancak dikkatli olun, amaçları farklıdır:

Application.StartupPath

StartupPath parametresini döndürür (uygulama çalıştırılırken ayarlanabilir)

System.IO.Directory.GetCurrentDirectory()

Geçerli dizini döndürür; bu, uygulamanın bulunduğu klasör olabilir veya olmayabilir. Aynı şey Environment.CurrentDirectory için de geçerlidir. Bunu bir DLL dosyasında kullanmanız durumunda, işlemin çalıştığı yerin yolunu döndürür (bu özellikle ASP.NET için geçerlidir).

Yorumlar (3)

Bir web uygulaması için, geçerli web uygulaması kök dizinini almak üzere, genellikle geçerli gelen istek için web sayfası tarafından çağrı yapılır:

HttpContext.Current.Server.MapPath();

System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;

Kod açıklamasının üstünde

Yorumlar (0)