5

在我的构建脚本中,我有一个辅助 powershell 函数,如下所示:

function set-connectionstring {
  param($path, $name, $value)
  $settings = [xml](get-content $path)
  $setting = $settings.configuration.connectionStrings.add | where { $_.name -eq $name }
  $setting.connectionString = "$value"
  $setting.providerName = "System.Data.SqlClient"
  $resolvedPath = resolve-path($path) 
  $settings.save($resolvedPath)
}

它工作得很好,除了当我尝试设置值时,它会奇怪地编码 & 符号。这是问题:

在我的连接字符串中,我&quot有价值。这应该是完全有效的。但是,我上面的代码将其转换"为完全不合理的。你知道我可以解决这个问题吗?

4

2 回答 2

6

您是否先尝试decode连接字符串?这是示例:

[System.Reflection.Assembly]::LoadWithPartialName("System.web")
[System.Web.HttpUtility]::HtmlDecode(""")
于 2012-07-23T12:02:16.400 回答
1

您将 $value 粘贴在字符串文字的中间,所以它的行为就像您输入了: $setting.connectionString = ""something""。这不是 XML 操作,而是 .NET 字符串分配,因此等号右侧的任何内容都必须是您在连接字符串中想要的内容,而不是转义的 XML 属性表示。所以要么在未转义的情况下传递它,要么在分配之前取消它。

于 2012-07-23T12:10:24.130 回答