Добавьте двойные кавычки к имени переменной для кода MS Deploy в c# - PullRequest
0 голосов
/ 08 января 2020

Код c#, написанный в компоненте задачи сценария служб SSIS.

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

Я связываю развертывание MS и устанавливаю параметры, поступающие из таблицы, управляемой. Приведенное выше выражение выдает ошибку, поскольку я не могу передать двойные кавычки в имя_компьютера параметр.

1 Ответ

2 голосов
/ 08 января 2020

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 нельзя использовать интерполяцию строк (буквенный префикс строки $).

...