fix DefaultValue getting loaded for publish profiles (#17526)

* fix DefaultValue getting loaded for publish profiles

* add comment
This commit is contained in:
Kim Santiago
2021-11-02 11:32:25 -07:00
committed by GitHub
parent d7b0b6c251
commit 0d485ffe2b
6 changed files with 44 additions and 9 deletions

View File

@@ -156,14 +156,18 @@ export function convertSlashesForSqlProj(filePath: string): string {
/**
* Read SQLCMD variables from xmlDoc and return them
* @param xmlDoc xml doc to read SQLCMD variables from. Format must be the same that sqlproj and publish profiles use
* @param publishProfile true if reading from publish profile
*/
export function readSqlCmdVariables(xmlDoc: any): Record<string, string> {
export function readSqlCmdVariables(xmlDoc: any, publishProfile: boolean): Record<string, string> {
let sqlCmdVariables: Record<string, string> = {};
for (let i = 0; i < xmlDoc.documentElement.getElementsByTagName(constants.SqlCmdVariable)?.length; i++) {
const sqlCmdVar = xmlDoc.documentElement.getElementsByTagName(constants.SqlCmdVariable)[i];
const varName = sqlCmdVar.getAttribute(constants.Include);
if (sqlCmdVar.getElementsByTagName(constants.DefaultValue)[0] !== undefined) {
// Publish profiles only support Value, so don't use DefaultValue even if it's there
// SSDT uses the Value (like <Value>$(SqlCmdVar__1)</Value>) where there
// are local variable values you can set in VS in the properties. Since we don't support that in ADS, only DefaultValue is supported for sqlproj.
if (!publishProfile && sqlCmdVar.getElementsByTagName(constants.DefaultValue)[0] !== undefined) {
// project file path
sqlCmdVariables[varName] = sqlCmdVar.getElementsByTagName(constants.DefaultValue)[0].childNodes[0].nodeValue;
}