2012-10-30 12 views
6

Mam plik programu Excel, który ma działanie kompilacji content w bibliotece klas. Do biblioteki odwołuje się zarówno aplikacja ASP.NET WebForms, jak i aplikacja konsoli, a plik Excel jest używany przez obie. Czy istnieje sposób, w jaki można programowo uzyskać ścieżkę do pliku tego pliku?Jak uzyskać ścieżkę do pliku zawartości w bibliotece klas

wiem w ASP mogę to zrobić:

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

praca Ci, ale zastanawiam się, czy nie lepiej, konsolidowane:

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

I w aplikacji konsoli mogę to zrobić sposób na znalezienie pliku ze złożenia i zwrócenie ścieżki.

Odpowiedz

1

Drugie podejście działa dobrze we wszystkich środowiskach, które należy po prostu zmienić, tak aby nie szukał on zespołu wejścia, ale konkretnego zespołu.

Najprostszym sposobem, aby to zrobić:

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

Alternatywą byłoby wykorzystanie wbudowanych zasobów, dzięki czemu można załadować plik bezpośrednio od zespołu. Oczywiście nie zadziałałoby to, gdyby plik mógł być zapisywalny przez użytkownika.

+0

Osadzony zasób nie będzie działał zbyt dobrze, ponieważ musimy współdziałać z plikiem excel (ugh) i potrzebować go na dysku. Miałem nadzieję uniknąć 'MapPath' lub' Path.Combine' w katalogu 'bin' i znaleźć plik, ale może nie być inaczej ... –

+0

Zawsze można zapisać plik z osadzonego zasobu w katalogu tymczasowym a następnie wykonaj tam interop. Zapobiegnie to również problemom, jeśli wiele procesów dotknie plik lub program Excel z jakiegoś powodu zawiesza się i nie zwalnia pliku. –

Powiązane problemy