2009-08-24 13 views
6

La proprietà Environment.CurrentDirectory restituisce sempre il percorso della directory di sistema invece della directory dell'applicazione. Nel PC del mio collega, restituisce la directory dell'applicazione.Environment.CurrentDirectory in C# .NET

Qual è il problema? Come posso risolverlo?

Il seguente codice sta lavorando per me

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", AppDomain.CurrentDomain.BaseDirectory)); 

AppDomain.CurrentDomain.BaseDirectory - Returns the directory E:\MyApplications\. 

Il seguente codice non funziona per me

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", Environment.CurrentDirectory)); 

Environment.CurrentDirectory - Returns c:\windows\system32. 

Questo file .dll può essere utilizzato in VB 6 e applicazioni ASP.NET

+0

Aggiungi qualche informazione in più ... forse uno snippet di codice e spiegando cosa stai cercando di fare ti aiuterà a ottenere una risposta. – Gishu

+0

È un'applicazione Windows Form? – Jehof

+0

È una libreria di classi. Ma può essere utilizzato nelle applicazioni VB 6 e ASP.NET – gopal

risposta

1

Ho il sospetto che questo potrebbe avere qualcosa a che fare con l'id utente corrente in cui l'app è in esecuzione, ad esempio se si sta eseguendo l'app in una sessione utente (ad es. Debugging in VS) allora questo potrebbe restituire la directory corrente, ma se lo stavi eseguendo sotto IIS allora questo potrebbe essere il motivo per cui è il default della cartella di sistema?

3

Non si dovrebbe utilizzare il valore Environment.CurrentDirectory come base per le ricerche di file perché può cambiare e potrebbe non essere sempre sotto il proprio controllo. per esempio. un file di salvataggio Come per una cartella diversa può cambiare il valore 'cartella corrente'. Come puoi vedere, può dare risultati imprevedibili.

Utilizzare un valore che è possibile controllare meglio. per esempio. un valore di ResourcesFolderPath in un file di configurazione (xml?) che viene aggiornato quando si installa l'app.

10

impostare la directory corrente

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //or set executing Assembly location path in param 

Environment.CurrentDirectory //now returns your app path 
5

Usa

System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly() Posizione.);