From 2a94ce3afb24e8a3f99ed19edf0d4ca1fb85e07d Mon Sep 17 00:00:00 2001 From: Vasu Bhog Date: Wed, 17 Aug 2022 18:07:23 -0700 Subject: [PATCH] Ensure SQL Nuget package reference is always updating to latest (#20390) * seperate nuget package references to always update to latest * nit * nit comments --- .../sql-bindings/src/common/azureFunctionsUtils.ts | 10 ++++------ .../sql-bindings/src/dialogs/addSqlBindingQuickpick.ts | 8 ++++++++ .../sql-bindings/src/services/azureFunctionsService.ts | 4 ++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/extensions/sql-bindings/src/common/azureFunctionsUtils.ts b/extensions/sql-bindings/src/common/azureFunctionsUtils.ts index 3ded71b3e9..befd970985 100644 --- a/extensions/sql-bindings/src/common/azureFunctionsUtils.ts +++ b/extensions/sql-bindings/src/common/azureFunctionsUtils.ts @@ -196,13 +196,13 @@ export async function getSettingsFile(projectFolder: string): Promise { +export async function addSqlNugetReferenceToProjectFile(projectFolder: string): Promise { // clear the output channel prior to adding the nuget reference outputChannel.clear(); - let addNugetCommmand = await utils.executeCommand(`dotnet add "${selectedProjectFile}" package ${constants.sqlExtensionPackageName} --prerelease`); + let addNugetCommmand = await utils.executeCommand(`dotnet add "${projectFolder}" package ${constants.sqlExtensionPackageName} --prerelease`); outputChannel.appendLine(constants.dotnetResult(addNugetCommmand)); outputChannel.show(true); TelemetryReporter.sendActionEvent(TelemetryViews.CreateAzureFunctionWithSqlBinding, TelemetryActions.addSQLNugetPackage); @@ -477,8 +477,6 @@ export async function promptAndUpdateConnectionStringSetting(projectUri: vscode. connectionStringSettingName = selectedSetting?.label; } } - // Add sql extension package reference to project. If the reference is already there, it doesn't get added again - await addSqlNugetReferenceToProjectFile(projectUri.fsPath); } else { // if no AF project was found or there's more than one AF functions project in the workspace, // ask for the user to input the setting name diff --git a/extensions/sql-bindings/src/dialogs/addSqlBindingQuickpick.ts b/extensions/sql-bindings/src/dialogs/addSqlBindingQuickpick.ts index 45f0c459a3..2fe1985dac 100644 --- a/extensions/sql-bindings/src/dialogs/addSqlBindingQuickpick.ts +++ b/extensions/sql-bindings/src/dialogs/addSqlBindingQuickpick.ts @@ -7,6 +7,7 @@ import * as vscode from 'vscode'; import * as uuid from 'uuid'; import * as constants from '../common/constants'; import * as utils from '../common/utils'; +import * as path from 'path'; import * as azureFunctionsUtils from '../common/azureFunctionsUtils'; import { TelemetryActions, TelemetryReporter, TelemetryViews } from '../common/telemetry'; import { addSqlBinding, getAzureFunctions } from '../services/azureFunctionsService'; @@ -113,6 +114,13 @@ export async function launchAddSqlBindingQuickpick(uri: vscode.Uri | undefined): .withAdditionalProperties(propertyBag).send(); return; } + + // Add latest sql extension package reference to project + // only add if AF project (.csproj) is found + if (projectUri?.fsPath) { + await azureFunctionsUtils.addSqlNugetReferenceToProjectFile(path.dirname(projectUri.fsPath)); + } + exitReason = 'done'; TelemetryReporter.createActionEvent(TelemetryViews.SqlBindingsQuickPick, TelemetryActions.finishAddSqlBinding) .withAdditionalProperties(propertyBag).send(); diff --git a/extensions/sql-bindings/src/services/azureFunctionsService.ts b/extensions/sql-bindings/src/services/azureFunctionsService.ts index 47602dab75..b5550a17bc 100644 --- a/extensions/sql-bindings/src/services/azureFunctionsService.ts +++ b/extensions/sql-bindings/src/services/azureFunctionsService.ts @@ -255,6 +255,10 @@ export async function createAzureFunction(node?: ITreeNodeInfo): Promise { suppressCreateProjectPrompt: true, ...(isCreateNewProject && { executeStep: connectionStringExecuteStep }) }); + + // Add latest sql extension package reference to project + await azureFunctionsUtils.addSqlNugetReferenceToProjectFile(projectFolder); + TelemetryReporter.createActionEvent(TelemetryViews.CreateAzureFunctionWithSqlBinding, telemetryStep) .withAdditionalProperties(propertyBag) .withConnectionInfo(connectionInfo).send();