Отредактируйте свойства Log4Net в файле Web.Config с помощью powershell.

Во время сборки CI я использую PowerShell для редактирования некоторых значений в файле Web.Config.

Я использовал следующий код для достижения этой цели;

#Open web.config
$xml = [xml](get-content($ConfigurationFile))
$conf = $xml.configuration  
$conf.appSettings.add | foreach { if ($_.key -eq "ApplicationRootUri") { $_.value = $ApplicationSettingValue } }  
$conf.appSettings.add | foreach { if ($_.key -eq "connectionString") { $_.value = $MainConnectionStringValue } }
#Save Config
$xml.Save($ConfigurationFile)

Однако следующее свойство, которое мне нужно изменить, находится не в части AppSettings файла конфигурации. Это в Log4App;

<log4net>
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
  <bufferSize value="1" />
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="VALUE_I_WANT_TO_CHANGE" />
</log4net>

Я пробовал различные способы изменения этого значения до сих пор безуспешно.

То, на чем я остановился, продолжается из приведенного выше кода;

$confLog = $conf.log4net.appender
$$confLog.add | foreach { if ($_.name -eq "AdoNetAppender") { $_.connectionString.value = $MainConnectionStringValue } }

Сообщение об ошибке, которое я получаю, обычно соответствует строкам "Свойство |"connectionString|" не может быть найден на этом объекте. Убедитесь, что свойство существует и может быть установлено.

Кто-нибудь знает, как правильно редактировать свойство connectionString?


person Sjharrison    schedule 27.04.2017    source источник
comment
Не ответ, но вы можете установить connectionStringName в конфигурации log4net, и он получит значение из web.config - поскольку вы, кажется, используете MainConnectionStringValue для обоих?   -  person stuartd    schedule 27.04.2017
comment
Привет @stuartd, как мне это сделать? Да, MainConnectionStringValue следует использовать для обеих строк подключения.   -  person Sjharrison    schedule 27.04.2017
comment
Я не заметил, что у вас есть строка подключения в разделе настроек приложения, это работает, только если она есть в разделе <connectionStrings>. Прости за это.   -  person stuartd    schedule 27.04.2017


Ответы (1)


Для всех, кому интересно, я был так близко, но так далеко

Вот то, что я собрал, что в итоге сработало для меня

$confLog = $conf.log4net.appender
$confLog | foreach { if ($_.name -eq "AdoNetAppender") { $_.connectionString.Value = $MainConnectionStringValue } }
person Sjharrison    schedule 28.04.2017