2016-10-25 2 views
1

В настоящее время у меня есть app.config, который содержит настройки для моей конфигурации Log4Net. Проблема здесь в том, что пользователь удаляет exe.config, тогда он ничего не будет записывать, поскольку регистратор не настроен.Сохранение нового файла app.config приложением, когда старый был удален пользователем

кроме регистратора есть другие вещи, которые мне нужно установить в конфиге (в будущем). Так что я хотел сделать, просто написать exe.config по умолчанию в том месте, где он должен быть, но я не могу найти способ сделать это правильно.

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
    </configSections> 

    <log4net> 
     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="..\Logging\ModuleSimulator.txt"/> 
      <appendToFile value="false"/> 
      <maxSizeRollBackups value="10"/> 
      <maximumFileSize value="10000000"/> 
      <staticLogFileName value="false"/> 
      <rollingStyle value="Size"/> 
      <PreserveLogFileNameExtension value="true"/> 
      <layout type="log4net.Layout.PatternLayout"> 
       <header value="[Header]&#xD;&#xA;" /> 
       <footer value="[Footer]&#xD;&#xA;" /> 
       <conversionPattern value="%date [%2thread] %-5level %logger - %message%newline%exception"/> 
      </layout> 
      <filter type="log4net.Filter.LevelRangeFilter"> 
       <LevelMin value="DEBUG"/> 
       <AcceptOnMatch value="true"/> 
      </filter> 
     </appender> 

     <root> 
      <appender-ref ref="RollingLogFileAppender"/> 
     </root> 
    </log4net> 

    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/> 
    </startup> 
</configuration> 

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

Я знаю, как настроить мой регистратор в коде, так что все, что мне нужно это способ сохранить его в новом файле конфигурации: Can you configure log4net in code instead of using a config file?

я обнаружить, когда нет файла конфигурации:

var exeConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

if (exeConfiguration.HasFile == false) 
{ 
    // TODO: create the config in code 
    // Save the config in code 
} 

Все, что мне нужно - это способ сохранить новую конфигурацию в коде, чтобы создать аналогичный файл. Я хочу знать, есть ли другой способ, чем сохранить весь XML-файл в строке (или ресурсах), а затем записать его в виде файла, когда я заметил, что файл конфигурации отсутствует.

Я надеюсь найти способ использовать ConfigurationManager или какой-либо другой компонент .Net для настройки моего приложения при запуске, а затем использовать его, чтобы сделать что-то вроде: Configuration.Save(); Я согласен с тем, что все изменения в этом вновь созданном файле не будут использоваться до перезапуска приложения, что не является проблемой.

+0

Как удалить файл App.Config? –

+0

@viveknuna он переходит к пути выполнения с помощью проводника файлов, выбирает файл и нажимает delete. – Vincent

+0

, но это не должно быть допустимо –

ответ

0

всегда сохраняйте файл резервной копии и используйте этот файл, когда производственная конфигурация удаляется пользователем.

+0

Для этого потребуется второй файл, который он также может удалить, такую ​​же проблему. – Vincent

+1

, то что бы вы ни делали, пользователь удалит. ничего не делать –

+1

@GhostDeveloper смешной ответ: D: D: P, но, пожалуйста, решите его проблему – Rajput

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