2012-10-30 16 views
6

Ho un file Excel che ha un'azione di creazione di content in una libreria di classi. La libreria fa riferimento sia a un'applicazione WebForm ASP.NET sia a un'applicazione console e il file Excel viene utilizzato da entrambi. C'è un modo posso ottenere a livello di codice il percorso del file di questo file?Come ottenere il percorso del contenuto del file nella libreria di classi

conosco in ASP posso fare questo:

HttpContext.Current.Server.MapPath(@"bin") 

E nella console app posso fare questo:

Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) 

Coloro lavoro, ma mi chiedo se c'è di meglio, consolidato modo per trovare il file dall'assieme e restituire il percorso.

risposta

1

Il secondo approccio funziona correttamente in tutti gli ambienti, è sufficiente modificarlo in modo che non ricerchi l'assieme di voci ma l'assemblaggio specifico.

modo più semplice per farlo è:

typeof(Some.Type.From.That.Assembly).Assembly.Location 

Un'alternativa sarebbe quella di utilizzare le risorse incorporate in modo da poter caricare il file direttamente dal gruppo. Ovviamente, questo non funzionerebbe se il file dovesse essere scrivibile dall'utente.

+0

Una risorsa incorporata non funzionerà molto bene perché dobbiamo fare il comando interop con il file excel (ugh) e averne bisogno su disco. Speravo di evitare di fare un 'MapPath' o' Path.Combine' nella directory 'bin' e trovare il file, ma potrebbe non esserci un altro modo ... –

+0

Puoi sempre salvare il file dalla risorsa incorporata nella directory temp e poi fai l'interop qui. Eviterebbe anche problemi se più processi toccano il file o eccellono per qualche motivo si blocca e non libera il file. –