лучшая книга, которую я имею когда-либо на объектно-ориентированном программировании, "Объектно-ориентированная Конструкция программного обеспечения Betrand" - если Вы действительно хотите получить основы, нет никакого пути вокруг этого.
Обычно я обращаюсь к каталогу, содержащему файл .exe моего приложения, с помощью:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
string exePath = Application.ExecutablePath;
string startupPath = Application.StartupPath;
РЕДАКТИРОВАТЬ - Без использования объекта приложения:
string path = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );
Подробнее см. Здесь:
Получить интересующую вас сборку (например, присвоить System.Reflection.Assembly переменную
):
System.Reflection.Assembly.GetEntryAssembly ()
или typeof (X) .Assembly
для класса X
, который входит в интересующую вас сборку (для Windows Forms вы можете использовать typeof (Program)
) Затем получите путь к файлу, из которого была загружена эта сборка a
:
System.IO.Path.GetDirectoryName (a.Location)
Объект Application
из приложения Windows Forms также возможен, как объясняется в других ответах.
MessageBox.Show("This program is located in: " + Environment.CurrentDirectory);