2017-04-27 13 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 ** 이름 **을 log4net 구성에 넣고 web.config에서 값을 검색합니다 - 둘 모두에 대해 'MainConnectionStringValue'를 사용하고있는 것처럼 보이십니까? – stuartd

+0

안녕하세요, 제가 그 일을 어떻게 하죠? 예 MainConnectionStringValue는 두 연결 문자열 모두에 사용해야합니다. – Sjharrison

+0

앱 설정 섹션에 연결 문자열이 있다는 것을 알지 못했지만, 이것은''섹션에있는 경우에만 작동합니다. 미안합니다. – stuartd

답변

0

, 정말 가까이 아직 너무 멀리 여기

내가 함께 결국 나를

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