| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Проблема с путями при сохранении файлов |
| Автор: Elfet 29.4.2007, 17:46 | ||||
Код работал нормально до того как я начал использовать openFileDialog
Если я в программе не открываю openFileDialog то всё нормально. Но если я запускаю его, то вот тут:
возникает ошибка: пишет что не может найти "путь до папки из которой открывал openFileDialog\Data\Elfet\Config.xml" А мне нужно что бы сохранилось всё в папку по относительному пути .\Data\Elfet\ к моей программе. В папке где находится программа есть папка Data\Elfet |
| Автор: tol05 29.4.2007, 22:09 | ||||
А почему бы тебе не использовать конструкцию:
или
Дело в том, что, как я почитал MSDN, System.Environment.CurrentDirectory указывает на текущую рабочую директорию (с которой взаимодействует поток выполнения),она в процессе работы может меняться. Assembly.GetExecutingAssembly.Location - путь к текущей выполняемой сборке. Если их будет несколько, и в разных папках, то время от времени тоже путь будет меняться, в зависимости от того, код какой сборки выполняется. Assembly.GetExecutingAssembly.ManifestModule.Assembly.Location - путь к сборке, которая содержит манифест. Она одна, думаю, это неплохо |
| Автор: AndZho 30.4.2007, 09:46 | ||||
Можно еще так:
далее
|
| Автор: tol05 30.4.2007, 10:02 | ||
| Нет, AndZho, не то. "." тоже каждый раз меняется, в зависимости от того, где находится папка, с которой работает процесс. Хотел в инете найти описание моих вариантов, да что-то не прет. Особенно по System.Environment.CurrentDirectory. Но можно подебагать и просто посмотреть. Или поверьте на слово Elfet,
да, это оно. |
| Автор: AndZho 30.4.2007, 10:12 | ||||
Вариант
вроде будет делать то что тебе нужно. Или я чего то не догоняю. |
| Автор: archeg 30.4.2007, 20:15 | ||||||
Нет, tol05 прав: "." возвращает текущий каталог, он может изменяться в зависимости от некоторых обстоятельств и необязательно должен быть каталогом програмы. Например
задает текущий каталог. Если не ошибаюсь какая-то винда могла устанавливать в свойствах ярлычка рабочий каталог - это он и есть. У меня ща виста - она такое не умеет. |
| Автор: Naum 2.5.2007, 12:52 |
А чем хуже System.Windows.Application.StartUpPath? |
| Автор: tol05 2.5.2007, 15:52 | ||
| Еле нашел в MSDN. Не знаю как у других, а у меня (MSDN for VS codename Orcas) класс System.Windows.Application свойства StartUpPath почему-то не содержит. А содержится оно почему-то в Microsoft.Office.Interop.Excel._Application interface. Это мне уже не нравится Да и библиотека presentationframework.dll с этим классом тоже наверняка не у каждого обнаружится. Как понимаю это для Framework-а 3.0? Короче, проблемы уже здесь. Почитал я о System.Windows.Application классе. Но ведь он предназначен для
А так больше ничего не скажу, вроде прикольный класс. Спасибо за инфу, кстати. |
| Автор: Void 2.5.2007, 16:30 |
| По-моему, Naum имел в виду System.Windows.Forms.Application. System.Windows.Application (как и всё пространство имён System.Windows) действительно относится к .NET 3.0, конкретно, к WPF. |
| Автор: Naum 2.5.2007, 17:09 |
Точно. Прошу прощения за очепятку. Не раз уже проверялось, ничто не мешает вызывать System.Windows.Forms.Application.StartUpPath и в этих случаях. Второе, все равно, если хотим пользовать [Open|Save]FileDialog, без пространства имен System.Windows.Forms никак не обойтись. |
| Автор: tol05 2.5.2007, 18:28 | ||
Это конечно. Просто System.Windows.Application запутало, а мозги у меня и без того слабые |