2017-04-27 54 views
0

在我的CI編譯期間,我使用PowerShell編輯Web.Config文件中的一些值。使用powershell編輯Web.Config文件中的Log4Net屬性

我已經使用下面的代碼來做到這一點;

#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 } } 

我收到的錯誤消息通常是'The property |'connectionString |'在這個對象上找不到。驗證該屬性是否存在,可以設置'

任何人都知道如何正確編輯connectionString屬性?

+0

不是一個答案,但你可以設置connectionString ** Name **在log4net配置中,它將從web.config中檢索值 - 因爲您似乎對兩者都使用了「MainConnectionStringValue」? – stuartd

+0

嗨@stuartd,我該怎麼做呢?是的,MainConnectionStringValue應該用於兩個連接字符串。 – Sjharrison

+0

我沒有注意到你在應用程序設置部分有你的連接字符串,只有當你在''部分有它時才能使用。對於那個很抱歉。 – stuartd

回答

0

對於任何人誰是有興趣的,我是如此接近卻又如此遠

以下是我已經把它最終爲我工作

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