【问题标题】:Add double quotes to variable name for MS Deploy code in c#在 c# 中为 MS Deploy 代码的变量名称添加双引号
【发布时间】:2020-01-08 15:26:04
【问题描述】:

它是用 SSIS 脚本任务组件编写的 C# 代码。

PS_script + @"""$compname = " "\" + Row.computername"\" + "$appname =" + Row.applicationname + " $appvalue = " + Row.appvalue + "";

我正在绑定 MS 部署并设置来自表驱动的参数。上述语句引发错误,因为我无法在 computername 参数中传递双引号。

【问题讨论】:

  • 你能添加一个预期的结果吗?
  • PS_script = PS_script + @""" $compname = ""PAPRDSPTAPP"" $appname = ""IIS Web 应用程序名称""$appvalue = """;这
  • PS_script += " $compname = \"" + Row.computername + "\" $appname = \"" + Row.applicationname + "\" $appvalue = \"" + Row.appvalue + "\"";

标签: c# string ssis msdeploy


【解决方案1】:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/verbatim

在 C# 中,前缀为 @"" 的文字字符串将替换为 "

例子:

var str = @"$compname = """ + Row.computername + @"""";

如果变量Row.computername 的值为SERV01,则结果为:

$compname = "SERV01"

您还可以使用\ 转义字符。然后\" 将替换为"

例子:

var str = "$compname = \"" + Row.computername + "\"";

如果变量Row.computername 的值为SERV01,那么结果将是:

$compname = "SERV01"

在您的情况下,您还可以使用string.Format 来提高灵活性:

string.Format(
    @" $compname = ""{0}"" $appname = ""{1}"" $appvalue = ""{2}""",
    Row.computername, Row.applicationname, Row.appvalue
);

警告,对于 SSIS 脚本任务,您不能使用字符串插值(文字字符串前缀 $)。

【讨论】:

  • 基本上这不起作用。在某处我需要以下格式的字符串"$msdeploy = \"C:\\\\Program Files\\\\IIS\\\\Microsoft Web Deploy V3\\\\msdeploy.exe\"\n $package = \"\"\n $compname = \"GRAVITAS_VM02\"\n $appname = \"IIS Web Application Name\"\n $appvalue = \"C:\\Deploy\\Test\\Test.zip"
  • $msdeploy 有 4 个反斜杠作为路径的分隔符,而 $appvalue 只有 2 个。是否需要?
  • 是的。我正在用 c# 语言构建它。这些 compayname , application 都是从 db 派生的,并将附加从 string 变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 2021-06-10
  • 1970-01-01
相关资源
最近更新 更多