Uzyskanie ścieżki bezwzględnej pliku wykonywalnego przy użyciu C#?
Spójrz na ten pseudokod:
string exe_path = system.get_exe_path()
print "This executable is located in " + exe_path
Jeśli zbuduję powyższy program i umieszczę plik wykonywalny w C:/meow/
, wyświetli on This executable is located in C:/meow/
za każdym razem, gdy zostanie uruchomiony, niezależnie od bieżącego katalogu roboczego.
Jak mógłbym to łatwo osiągnąć używając C#
?
7 answers
MSDN ma Artykuł , który mówi, aby używać System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
; jeśli potrzebujesz katalogu, użyj System.IO.Path.GetDirectoryName
na tym wyniku.
Albo, jest krótszy Application.ExecutablePath
który "pobiera ścieżkę do pliku wykonywalnego, który uruchomił aplikację, w tym nazwę pliku wykonywalnego", więc może to oznaczać, że jest nieco mniej niezawodny w zależności od tego, jak aplikacja została uruchomiona.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-01 22:03:32
AppDomain.CurrentDomain.BaseDirectory
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-24 14:18:50
using System.Reflection;
string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-13 12:01:04
" pobiera ścieżkę lub lokalizację UNC załadowanego pliku zawierającego manifest."
Zobacz: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.location.aspx
Application.ResourceAssembly.Location
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-19 18:07:54
var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Wskoczyłem na najlepiej ocenianą odpowiedź i stwierdziłem, że nie dostałem tego, czego oczekiwałem. Musiałem przeczytać komentarze, aby znaleźć to, czego szukałem.
Z tego powodu zamieszczam odpowiedź wymienioną w komentarzach, aby dać jej ekspozycję, na którą zasługuje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-28 15:38:20
Przypuśćmy, że tak .plik konfiguracyjny w aplikacji konsoli i teraz zaczynam jak poniżej.
Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\YourFolderName\\log4net.config";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-25 11:14:15
Na mojej stronie, użyłem, z aplikacją formularza:
String Directory = System.Windows.Forms.Application.StartupPath;
Pobiera ścieżkę uruchamiania aplikacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-10 22:59:46