2013-06-28 4 views
0

Фон: У меня есть некоторые данные приложения. то есть в базе данных, появляются важные файлы конфигурации. Эти данные жизненно важны для того, чтобы приложение запускало другое, после чего оно вышло.Где я должен хранить свои конфигурационные файлы в приложении WPF

Задача: Где хранить эти данные. в какой папке и где. Прямо сейчас (это неправильно) он хранится в папке Debug/App_Data. Но вызывает проблемы в git, и когда мы публикуем приложение, данные не найдены. Итак, где мы можем сохранить эту папку?

данной структуры "WpfApplication2 \ WpfApplication2 \ Bin \ Debug"

Эти файлы должны присутствовать при запуске приложения. Поэтому они должны быть частью самого приложения.

+1

Включите эти файлы в свой проект и установить атрибут «Копировать в выходной каталог» в «Копировать всегда» –

+0

я попробую это. Пожалуйста, добавьте это как ответ –

+0

Не обязательно. Сначала попробуйте :) –

ответ

1

Включите эти файлы в свой проект и установить атрибут Copy to Output directory в Copy always

1

предполагают использовать:

var pathToConfig = Path.Combine(System.Environment.GetFolderPath(
      Environment.SpecialFolder.CommonApplicationData), YOUR_APP_NAME); 

В Windows Vista и + машина это закончится в "C: \ ProgramData \ AllUser \ YOUR_APP_NAME"

В Windows XP «C: \ Параметры документа и \ Application Data \ YOUR_APP_NAME "

В обоих случаях вы гарантируете самой ОС, чтобы иметь разрешение на запись в этом местоположении и ее« скрытую »от глаз пользователей (обе папки скрыты по умолчанию)

Как @Athari правильно говорит: YOUR_APP_NAME должен быть YOUR_COMPAMY_NAME \ YOUR_APP_NAME

+1

Рекомендуемым способом является использование «CompanyName \ AppName», а не только «AppName». И папки «C: \ ProgramData» и «C: \ Document and Settings \ All Users \ Application Data», AFAIK. – Athari

1

Вы можете сохранить ваши приложения определенные файлы на

Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.LocalApplicationData), 
    Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName)); 

, но вы можете использовать другие папки, такие как My Documents тоже.

Edit: Я вспомнил, я использовал изолированное хранилище в приложении WPF назад в .NET 3.0 (я думаю):

Introduction to Isolated Storage

Performing Isolated Storage Tasks

+0

Использование папки «Документы» - это идея BAD. Из-за постоянного рассылки спама из всех видов приложений он стал практически непригодным для использования. Использование имени сборки также является плохой идеей, так как рекомендуемым способом является использование «CompanyName \ AppName». Использование имени сборки приведет к спаму папки с бессмысленными папками.И, наконец, исходный вопрос предполагает, что данные специфичны для установки, а не для конкретного пользователя. – Athari

+0

Эти пункты применимы и к любой другой папке в системе. В «CompanyName \ AppName»; Согласен. Я делаю это сам; и этот ответ должен был просто объяснить эту идею. И - для некоторых сценариев - «Мои документы» - логическое место; особенно когда вы собираетесь повторно использовать и совместно использовать сгенерированные данные - с точки зрения пользователя. А для конкретных приложений можно использовать вместо этого 'Environment.SpecialFolder.CommonApplicationData'. Кстати, что вы предлагаете? –

0

Ваш App.config должен быть в обычное место для настольных приложений .NET: оно должно быть yourApplication .exe.config в той же папке, что и .exe.