Jeg ser at det er noen måter å få søkemappebanen på:
Application.StartupPath
(Applikasjon.Oppstartsbane)System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)"
AppDomain.CurrentDomain.BaseDirectory
(appdomene.gjeldende domene.basekatalog)System.IO.Directory.GetCurrentDirectory()
Environment.CurrentDirectory
(Miljø.NåværendeKatalog)System.IO.Path.GetDirectoryName()
7.
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)`System.IO.Path.GetDirectory(Application.ExecutablePath)
(System.IO.Path.GetDirectory(Application.ExecutablePath)`).Hva er den beste måten avhengig av situasjonen?
AppDomain.CurrentDomain.BaseDirectory` er sannsynligvis den mest nyttige for å få tilgang til filer hvis plassering er relativ til applikasjonens installasjonskatalog.
I en ASP.NET-applikasjon vil dette være applikasjonens rotkatalog, ikke undermappen - som sannsynligvis er det du vanligvis vil ha. I en klientapplikasjon vil det være katalogen som inneholder den viktigste kjørbare filen.
I en VSTO 2005-applikasjon vil det være katalogen som inneholder VSTO-administrerte samlinger for applikasjonen din, ikke for eksempel banen til den kjørbare Excel-filen.
De andre kan returnere forskjellige kataloger avhengig av miljøet ditt - se for eksempel svaret til @Vimvq1987.
CodeBase
er stedet der en fil ble funnet og kan være en URL som begynner med http://. I så fall vil Location
sannsynligvis være nedlastingsbufferen for samlingen. CodeBase er ikke garantert å være angitt for sammenstillinger i GAC.
Merk at ikke alle disse metodene gir samme verdi. I noen tilfeller kan de returnere samme verdi, men vær forsiktig, formålene deres er forskjellige:
Application.StartupPath
returnerer parameteren StartupPath
(kan angis når applikasjonen kjøres).
System.IO.Directory.GetCurrentDirectory()
returnerer den gjeldende katalogen, som kan være eller ikke være mappen der applikasjonen ligger. Det samme gjelder for Environment.CurrentDirectory
. Hvis du bruker dette i en DLL-fil, vil det returnere banen til der prosessen kjører (dette gjelder spesielt i ASP.NET).
For en webapplikasjon, for å få den gjeldende rotkatalogen for webapplikasjonen, ring vanligvis etter websiden for den gjeldende innkommende forespørselen:
HttpContext.Current.Server.MapPath();
System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;