Мне нужно, чтобы мой файл настроек C # был статичным (как в одном месте) - PullRequest
1 голос
/ 29 июля 2011

В настоящее время у меня есть файл по умолчанию Settings.settings, к которому я получаю доступ через Properties.Settings.Default.

Но эта конфигурация сохраняется в папке appdata моего пользователя.Как я могу получить только один файл конфигурации, который будет находиться в том же каталоге, что и exe-файл, который является универсальным И может быть изменен во время выполнения?

Ответы [ 4 ]

1 голос
/ 29 июля 2011

Вы не можете сделать это с помощью свойства Properties.Settings, поскольку документация говорит:

Настройки области приложения доступны только для чтения и могут быть изменены только в время разработки или путем изменения файла .exe.config в между сессиями приложений. Однако настройки области действия пользователя могут быть записывается во время выполнения, так же, как вы изменили бы любое значение свойства. новое значение сохраняется в течение сеанса приложения. Вы может сохранять изменения в пользовательских настройках между сеансами приложения вызывая метод Settings.Save. Эти настройки сохраняются в Файл user.config.

Альтернативным подходом было бы использование API-интерфейса System.IO для чтения и записи файла конфигурации, который вы разрабатываете самостоятельно.

1 голос
/ 29 июля 2011

У вас будут проблемы с UAC в Vista / 7.
Пожалуйста, храните важные файлы данных приложения, такие как «Настройки», в скрытом и доступном каталоге - AppData.
UAC разрешает доступ к этому каталогу и его подкаталогам.

Если вы хотите поделиться файлом среди всех пользователей, вы можете использовать каталог «CommonAppData», но вам нужны права администратора для записи туда.

0 голосов
/ 03 августа 2011

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

0 голосов
/ 29 июля 2011

Вы можете разместить настройки в файле конфигурации приложения в теге <applicationSettings>.

См. http://msdn.microsoft.com/en-us/library/ms229207.aspx для документации по тегу.

Например (xxxxx -> имя проекта Visual Studio, ггггг-> фактическая настройка в файле настроек).

  <applicationSettings>
    <xxxxxx.Properties.Settings>
      <setting name="yyyyyy"
        serializeAs="String">
        <value>some_value</value>
      </setting>
    </ReprintProcess.Properties.Settings>
  </applicationSettings>
...