【发布时间】:2017-04-27 12:33:23
【问题描述】:
在我的 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 属性吗?
【问题讨论】:
-
不是答案,但您可以在 log4net 配置中设置 connectionStringName ,它将从 web.config 中检索值 - 因为您似乎正在使用 @987654324 @ 两者都用?
-
嗨@stuartd,我该怎么做呢?是 MainConnectionStringValue 应该用于两个连接字符串。
-
我没有注意到您在应用程序设置部分中有您的连接字符串,这只有在您将它放在
<connectionStrings>部分中时才有效。对此感到抱歉。
标签: xml powershell web-config log4net web.config-transform