2013-07-19 2 views
-3

Предположим, у меня есть следующая сценария. У меня есть приложение, проживающих вПолучение пути приложения в приложении C# windows

D: \ MyWinForm \

У меня есть

D: \ MyWinForm \ DAL

D: \ MyWinForm \ УСК

D: \ MyWinForm \ Program.cs

D: \ MyWinForm \ Form1.cs

D: \ MyWinForm \ App.config

D: \ MyWinForm \ ErrorLog \ Errorlog.txt

В папке DAL (D: \ MyWinForm \ DAL) у меня есть Dal.cs файлу

D: \ MyWinForm \ DAL \ Dal.cs

В Тхи s file У меня есть функция, которая должна вернуть

"D: \ MyWinForm \ ErrorLog \ ErrorLog.txt" этот путь как строка.

Здесь я задал много вопросов. Но не мог найти подходящий ответ

+1

Вы пробовали что-то по пути Path.GetFullPath (@ ". \ ErrorLog \ ErrorLog.txt") '? Он вернет '' D: \ MyWinForm \ ErrorLog \ ErrorLog.txt '', если ваша сборка находится в 'D: \ MyWinForm' –

ответ

1

Edit:

Это общепринятая и хорошая практика, чтобы сохранить свой путь войти в файл app.config. Затем вы удаляете проблему, связанную с вашим пути журнала, относительно пути к вашему приложению. Например:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration>  
    <appSettings> 
    <add key="LogPath" value="C:\Logs"/> 
    </appSettings> 
</configuration> 

Затем вы загружаете этот путь из своего кода следующим образом.

string logPath = ConfigurationManager.AppSettings["LogPath"]; 

Теперь у вас есть централизованное место для хранения ваших журналов.

Кроме того, я рекомендую посмотреть на log4net. Это популярная среда ведения журналов .NET.


private string GetErrorLogPath() 
{ 
    return Path.GetFullPath(@".\ErrorLog\ErrorLog.txt") 
} 

Path.GetFullPath

+0

Что делать, если приложение перемещено из D: \ в C: \? Нет причин, по которым относительный путь не может быть использован здесь. – keyboardP

+0

Я буквально отвечал на его вопрос «В этом файле у меня есть функция, которая должна вернуть« D: \ MyWinForm \ ErrorLog \ ErrorLog.txt »этот путь как строку." –

+1

@SamLeach не обижайтесь, но вы также напишите 'public string GetUserName() {return" Sam "; } 'как ответ на вопрос« Как получить текущее имя пользователя приложения? » ? –

2

Большинство Ваш вопрос не имеет никакого значения, потому что вы не должны быть заинтересованы в реальной cs файл, он не будет иметь значения, когда его скомпилирован, это выглядит, как вы можете сделать

Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"ErrorLog","ErrorLog.txt"); 

но утомляйтесь, так как не каждый может иметь доступ к каталогу программы, вы можете изучить использование папки данных приложения

Смежные вопросы