diff --git a/extensions/sql-database-projects/src/common/constants.ts b/extensions/sql-database-projects/src/common/constants.ts index 2b1fcc6849..e7cc6d21a9 100644 --- a/extensions/sql-database-projects/src/common/constants.ts +++ b/extensions/sql-database-projects/src/common/constants.ts @@ -21,7 +21,7 @@ export const msdb = 'msdb'; export const msdbDacpac = 'msdb.dacpac'; export const MicrosoftDatatoolsSchemaSqlSql = 'Microsoft.Data.Tools.Schema.Sql.Sql'; export const databaseSchemaProvider = 'DatabaseSchemaProvider'; -export const sqlMsbuildSdk = 'Microsoft.Build.Sql'; +export const sqlProjectSdk = 'Microsoft.Build.Sql'; // Project Provider export const emptySqlDatabaseProjectTypeId = 'EmptySqlDbProj'; diff --git a/extensions/sql-database-projects/src/models/project.ts b/extensions/sql-database-projects/src/models/project.ts index a7382526e6..fbea48abfa 100644 --- a/extensions/sql-database-projects/src/models/project.ts +++ b/extensions/sql-database-projects/src/models/project.ts @@ -34,7 +34,7 @@ export class Project implements ISqlProject { private _preDeployScripts: FileProjectEntry[] = []; private _postDeployScripts: FileProjectEntry[] = []; private _noneDeployScripts: FileProjectEntry[] = []; - private _isMsbuildSdkStyleProject: boolean = false; + private _isSdkStyleProject: boolean = false; // https://docs.microsoft.com/en-us/dotnet/core/project-sdk/overview public get dacpacOutputPath(): string { return path.join(this.projectFolderPath, 'bin', 'Debug', `${this._projectFileName}.dacpac`); @@ -88,8 +88,8 @@ export class Project implements ISqlProject { return this._noneDeployScripts; } - public get isMsbuildSdkStyleProject(): boolean { - return this._isMsbuildSdkStyleProject; + public get isSdkStyleProject(): boolean { + return this._isSdkStyleProject; } private projFileXmlDoc: Document | undefined = undefined; @@ -119,8 +119,8 @@ export class Project implements ISqlProject { const projFileText = await fs.readFile(this._projectFilePath); this.projFileXmlDoc = new xmldom.DOMParser().parseFromString(projFileText.toString()); - // check if this is a new msbuild sdk style project - this._isMsbuildSdkStyleProject = this.CheckForMsbuildSdkStyleProject(); + // check if this is an sdk style project https://docs.microsoft.com/en-us/dotnet/core/project-sdk/overview + this._isSdkStyleProject = this.CheckForSdkStyleProject(); // get files and folders this._files = await this.readFilesInProject(); @@ -151,14 +151,14 @@ export class Project implements ISqlProject { /** * Gets all the files specified by and removes all the files specified by - * and all files included by the default glob of the folder of the sqlproj if it's an msbuild sdk style project + * and all files included by the default glob of the folder of the sqlproj if it's an sdk style project */ private async readFilesInProject(): Promise { const filesSet: Set = new Set(); const entriesWithType: { relativePath: string, typeAttribute: string }[] = []; - // default glob include pattern for msbuild sdk style projects - if (this._isMsbuildSdkStyleProject) { + // default glob include pattern for sdk style projects + if (this._isSdkStyleProject) { try { const globFiles = await utils.getSqlFilesInFolder(this.projectFolderPath, true); globFiles.forEach(f => { @@ -183,8 +183,8 @@ export class Project implements ISqlProject { if (relativePath) { const fullPath = path.join(utils.getPlatformSafeFileEntryPath(this.projectFolderPath), utils.getPlatformSafeFileEntryPath(relativePath)); - // msbuild sdk style projects can handle other globbing patterns like and - if (this._isMsbuildSdkStyleProject && !(await utils.exists(fullPath))) { + // sdk style projects can handle other globbing patterns like and + if (this._isSdkStyleProject && !(await utils.exists(fullPath))) { // add files from the glob pattern const globFiles = await utils.globWithPattern(fullPath); globFiles.forEach(gf => { @@ -205,7 +205,7 @@ export class Project implements ISqlProject { // // after all the files have been included, remove the ones specified in the sqlproj to remove - if (this._isMsbuildSdkStyleProject) { + if (this._isSdkStyleProject) { for (let b = 0; b < buildElements.length; b++) { const relativePath = buildElements[b].getAttribute(constants.Remove)!; @@ -238,8 +238,8 @@ export class Project implements ISqlProject { private async readFolders(): Promise { const folderEntries: FileProjectEntry[] = []; - // glob style getting folders for new msbuild sdk style projects - if (this._isMsbuildSdkStyleProject) { + // glob style getting folders for sdk style projects + if (this._isSdkStyleProject) { const folders = await utils.getFoldersInFolder(this.projectFolderPath, true); folders.forEach(f => { folderEntries.push(this.createFileProjectEntry(utils.trimUri(Uri.file(this.projectFilePath), Uri.file(f)), EntryType.Folder)); @@ -448,27 +448,27 @@ export class Project implements ISqlProject { } /** - * Checks for the 3 possible ways a project can reference the sql msbuild sdk + * Checks for the 3 possible ways a project can reference the sql project sdk * https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-use-project-sdk?view=vs-2019 - * @returns true if the project is an msbuild sdk style project, false if it isn't + * @returns true if the project is an sdk style project, false if it isn't */ - public CheckForMsbuildSdkStyleProject(): boolean { + public CheckForSdkStyleProject(): boolean { // type 1: Sdk node like const sdkNodes = this.projFileXmlDoc!.documentElement.getElementsByTagName(constants.Sdk); if (sdkNodes.length > 0) { - return sdkNodes[0].getAttribute(constants.Name) === constants.sqlMsbuildSdk; + return sdkNodes[0].getAttribute(constants.Name) === constants.sqlProjectSdk; } // type 2: Project node has Sdk attribute like const sdkAttribute: string = this.projFileXmlDoc!.documentElement.getAttribute(constants.Sdk)!; if (sdkAttribute) { - return sdkAttribute.includes(constants.sqlMsbuildSdk); + return sdkAttribute.includes(constants.sqlProjectSdk); } // type 3: Import node with Sdk attribute like const importNodes = this.projFileXmlDoc!.documentElement.getElementsByTagName(constants.Import); for (let i = 0; i < importNodes.length; i++) { - if (importNodes[i].getAttribute(constants.Sdk) === constants.sqlMsbuildSdk) { + if (importNodes[i].getAttribute(constants.Sdk) === constants.sqlProjectSdk) { return true; } } @@ -478,7 +478,7 @@ export class Project implements ISqlProject { public async updateProjectForRoundTrip(): Promise { if (this._importedTargets.includes(constants.NetCoreTargets) && !this.containsSSDTOnlySystemDatabaseReferences() // old style project check - || this.isMsbuildSdkStyleProject) { // new style project check + || this.isSdkStyleProject) { // new style project check return; } @@ -1359,8 +1359,8 @@ export class Project implements ISqlProject { // If folder doesn't exist, create it await fs.mkdir(absoluteFolderPath, { recursive: true }); - // don't need to add the folder to the sqlproj if this is an msbuild sdk style project because globbing will get the folders - if (this.isMsbuildSdkStyleProject) { + // don't need to add the folder to the sqlproj if this is an sdk style project because globbing will get the folders + if (this.isSdkStyleProject) { return this.createFileProjectEntry(relativeFolderPath, EntryType.Folder); } diff --git a/extensions/sql-database-projects/src/test/baselines/baselines.ts b/extensions/sql-database-projects/src/test/baselines/baselines.ts index bccee2ac01..9c346869bf 100644 --- a/extensions/sql-database-projects/src/test/baselines/baselines.ts +++ b/extensions/sql-database-projects/src/test/baselines/baselines.ts @@ -27,13 +27,13 @@ export let sqlProjectMissingVersionBaseline: string; export let sqlProjectInvalidVersionBaseline: string; export let sqlProjectCustomCollationBaseline: string; export let sqlProjectInvalidCollationBaseline: string; -export let newStyleProjectSdkNodeBaseline: string; -export let newStyleProjectSdkProjectAttributeBaseline: string; +export let newSdkStyleProjectSdkNodeBaseline: string; +export let newSdkStyleProjectSdkProjectAttributeBaseline: string; export let newStyleProjectSdkImportAttributeBaseline: string; -export let openNewStyleSqlProjectBaseline: string; -export let openNewStyleSqlProjectWithFilesSpecifiedBaseline: string; -export let openNewStyleSqlProjectWithGlobsSpecifiedBaseline: string; -export let openNewStyleSqlProjectWithBuildRemoveBaseline: string; +export let openSdkStyleSqlProjectBaseline: string; +export let openSdkStyleSqlProjectWithFilesSpecifiedBaseline: string; +export let openSdkStyleSqlProjectWithGlobsSpecifiedBaseline: string; +export let openSdkStyleSqlProjectWithBuildRemoveBaseline: string; const baselineFolderPath = __dirname; @@ -58,13 +58,13 @@ export async function loadBaselines() { sqlProjectInvalidVersionBaseline = await loadBaseline(baselineFolderPath, 'sqlProjectInvalidVersionBaseline.xml'); sqlProjectCustomCollationBaseline = await loadBaseline(baselineFolderPath, 'sqlProjectCustomCollationBaseline.xml'); sqlProjectInvalidCollationBaseline = await loadBaseline(baselineFolderPath, 'sqlProjectInvalidCollationBaseline.xml'); - newStyleProjectSdkNodeBaseline = await loadBaseline(baselineFolderPath, 'newStyleSqlProjectSdkNodeBaseline.xml'); - newStyleProjectSdkProjectAttributeBaseline = await loadBaseline(baselineFolderPath, 'newStyleSqlProjectSdkProjectAttributeBaseline.xml'); - newStyleProjectSdkImportAttributeBaseline = await loadBaseline(baselineFolderPath, 'newStyleSqlProjectSdkImportAttributeBaseline.xml'); - openNewStyleSqlProjectBaseline = await loadBaseline(baselineFolderPath, 'openNewStyleSqlProjectBaseline.xml'); - openNewStyleSqlProjectWithFilesSpecifiedBaseline = await loadBaseline(baselineFolderPath, 'openNewStyleSqlProjectWithFilesSpecifiedBaseline.xml'); - openNewStyleSqlProjectWithGlobsSpecifiedBaseline = await loadBaseline(baselineFolderPath, 'openNewStyleSqlProjectWithGlobsSpecifiedBaseline.xml'); - openNewStyleSqlProjectWithBuildRemoveBaseline = await loadBaseline(baselineFolderPath, 'openNewStyleSqlProjectWithBuildRemoveBaseline.xml'); + newSdkStyleProjectSdkNodeBaseline = await loadBaseline(baselineFolderPath, 'newSdkStyleSqlProjectSdkNodeBaseline.xml'); + newSdkStyleProjectSdkProjectAttributeBaseline = await loadBaseline(baselineFolderPath, 'newSdkStyleSqlProjectSdkProjectAttributeBaseline.xml'); + newStyleProjectSdkImportAttributeBaseline = await loadBaseline(baselineFolderPath, 'newSdkStyleSqlProjectSdkImportAttributeBaseline.xml'); + openSdkStyleSqlProjectBaseline = await loadBaseline(baselineFolderPath, 'openSdkStyleSqlProjectBaseline.xml'); + openSdkStyleSqlProjectWithFilesSpecifiedBaseline = await loadBaseline(baselineFolderPath, 'openSdkStyleSqlProjectWithFilesSpecifiedBaseline.xml'); + openSdkStyleSqlProjectWithGlobsSpecifiedBaseline = await loadBaseline(baselineFolderPath, 'openSdkStyleSqlProjectWithGlobsSpecifiedBaseline.xml'); + openSdkStyleSqlProjectWithBuildRemoveBaseline = await loadBaseline(baselineFolderPath, 'openSdkStyleSqlProjectWithBuildRemoveBaseline.xml'); } async function loadBaseline(baselineFolderPath: string, fileName: string): Promise { diff --git a/extensions/sql-database-projects/src/test/baselines/newStyleSqlProjectSdkImportAttributeBaseline.xml b/extensions/sql-database-projects/src/test/baselines/newSdkStyleSqlProjectSdkImportAttributeBaseline.xml similarity index 100% rename from extensions/sql-database-projects/src/test/baselines/newStyleSqlProjectSdkImportAttributeBaseline.xml rename to extensions/sql-database-projects/src/test/baselines/newSdkStyleSqlProjectSdkImportAttributeBaseline.xml diff --git a/extensions/sql-database-projects/src/test/baselines/newStyleSqlProjectSdkNodeBaseline.xml b/extensions/sql-database-projects/src/test/baselines/newSdkStyleSqlProjectSdkNodeBaseline.xml similarity index 100% rename from extensions/sql-database-projects/src/test/baselines/newStyleSqlProjectSdkNodeBaseline.xml rename to extensions/sql-database-projects/src/test/baselines/newSdkStyleSqlProjectSdkNodeBaseline.xml diff --git a/extensions/sql-database-projects/src/test/baselines/newStyleSqlProjectSdkProjectAttributeBaseline.xml b/extensions/sql-database-projects/src/test/baselines/newSdkStyleSqlProjectSdkProjectAttributeBaseline.xml similarity index 100% rename from extensions/sql-database-projects/src/test/baselines/newStyleSqlProjectSdkProjectAttributeBaseline.xml rename to extensions/sql-database-projects/src/test/baselines/newSdkStyleSqlProjectSdkProjectAttributeBaseline.xml diff --git a/extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectBaseline.xml b/extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectBaseline.xml similarity index 100% rename from extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectBaseline.xml rename to extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectBaseline.xml diff --git a/extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectWithBuildRemoveBaseline.xml b/extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectWithBuildRemoveBaseline.xml similarity index 100% rename from extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectWithBuildRemoveBaseline.xml rename to extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectWithBuildRemoveBaseline.xml diff --git a/extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectWithFilesSpecifiedBaseline.xml b/extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectWithFilesSpecifiedBaseline.xml similarity index 100% rename from extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectWithFilesSpecifiedBaseline.xml rename to extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectWithFilesSpecifiedBaseline.xml diff --git a/extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectWithGlobsSpecifiedBaseline.xml b/extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectWithGlobsSpecifiedBaseline.xml similarity index 100% rename from extensions/sql-database-projects/src/test/baselines/openNewStyleSqlProjectWithGlobsSpecifiedBaseline.xml rename to extensions/sql-database-projects/src/test/baselines/openSdkStyleSqlProjectWithGlobsSpecifiedBaseline.xml diff --git a/extensions/sql-database-projects/src/test/project.test.ts b/extensions/sql-database-projects/src/test/project.test.ts index 69dd60d596..ddd7bb130d 100644 --- a/extensions/sql-database-projects/src/test/project.test.ts +++ b/extensions/sql-database-projects/src/test/project.test.ts @@ -828,7 +828,7 @@ describe('Project: sqlproj content operations', function (): void { }); }); -describe('Project: Msbuild sdk style project content operations', function (): void { +describe('Project: sdk style project content operations', function (): void { before(async function (): Promise { await baselines.loadBaselines(); }); @@ -838,7 +838,7 @@ describe('Project: Msbuild sdk style project content operations', function (): v }); it('Should read project from sqlproj and files and folders by globbing', async function (): Promise { - projFilePath = await testUtils.createTestSqlProjFile(baselines.openNewStyleSqlProjectBaseline); + projFilePath = await testUtils.createTestSqlProjFile(baselines.openSdkStyleSqlProjectBaseline); await testUtils.createDummyFileStructureWithPrePostDeployScripts(false, undefined, path.dirname(projFilePath)); const project: Project = await Project.openProject(projFilePath); @@ -868,7 +868,7 @@ describe('Project: Msbuild sdk style project content operations', function (): v }); it('Should handle files listed in sqlproj', async function (): Promise { - projFilePath = await testUtils.createTestSqlProjFile(baselines.openNewStyleSqlProjectWithFilesSpecifiedBaseline); + projFilePath = await testUtils.createTestSqlProjFile(baselines.openSdkStyleSqlProjectWithFilesSpecifiedBaseline); await testUtils.createDummyFileStructure(false, undefined, path.dirname(projFilePath)); const project: Project = await Project.openProject(projFilePath); @@ -887,7 +887,7 @@ describe('Project: Msbuild sdk style project content operations', function (): v const testFolderPath = await testUtils.generateTestFolderPath(); const mainProjectPath = path.join(testFolderPath, 'project'); const otherFolderPath = path.join(testFolderPath, 'other'); - projFilePath = await testUtils.createTestSqlProjFile(baselines.openNewStyleSqlProjectWithGlobsSpecifiedBaseline, mainProjectPath); + projFilePath = await testUtils.createTestSqlProjFile(baselines.openSdkStyleSqlProjectWithGlobsSpecifiedBaseline, mainProjectPath); await testUtils.createDummyFileStructure(false, undefined, path.dirname(projFilePath)); // create files outside of project folder that are included in the project file @@ -920,7 +920,7 @@ describe('Project: Msbuild sdk style project content operations', function (): v const testFolderPath = await testUtils.generateTestFolderPath(); const mainProjectPath = path.join(testFolderPath, 'project'); const otherFolderPath = path.join(testFolderPath, 'other'); - projFilePath = await testUtils.createTestSqlProjFile(baselines.openNewStyleSqlProjectWithBuildRemoveBaseline, mainProjectPath); + projFilePath = await testUtils.createTestSqlProjFile(baselines.openSdkStyleSqlProjectWithBuildRemoveBaseline, mainProjectPath); await testUtils.createDummyFileStructure(false, undefined, path.dirname(projFilePath)); // create files outside of project folder that are included in the project file @@ -949,7 +949,7 @@ describe('Project: Msbuild sdk style project content operations', function (): v }); it('Should only add Build entries to sqlproj for files not included by project folder glob and external streaming jobs', async function (): Promise { - projFilePath = await testUtils.createTestSqlProjFile(baselines.openNewStyleSqlProjectBaseline); + projFilePath = await testUtils.createTestSqlProjFile(baselines.openSdkStyleSqlProjectBaseline); const project = await Project.openProject(projFilePath); const folderPath = 'Stored Procedures'; @@ -1110,15 +1110,15 @@ describe('Project: round trip updates', function (): void { should(project.importedTargets.length).equal(3); // additional target should exist by default }); - it('Should not show update project warning message when opening msbuild sdk style project using Sdk node', async function (): Promise { - await shouldNotShowUpdateWarning(baselines.newStyleProjectSdkNodeBaseline); + it('Should not show update project warning message when opening sdk style project using Sdk node', async function (): Promise { + await shouldNotShowUpdateWarning(baselines.newSdkStyleProjectSdkNodeBaseline); }); - it('Should not show update project warning message when opening msbuild sdk style project using Project node with Sdk attribute', async function (): Promise { - await shouldNotShowUpdateWarning(baselines.newStyleProjectSdkProjectAttributeBaseline); + it('Should not show update project warning message when opening sdk style project using Project node with Sdk attribute', async function (): Promise { + await shouldNotShowUpdateWarning(baselines.newSdkStyleProjectSdkProjectAttributeBaseline); }); - it('Should not show update project warning message when opening msbuild sdk style project using Import node with Sdk attribute', async function (): Promise { + it('Should not show update project warning message when opening sdk style project using Import node with Sdk attribute', async function (): Promise { await shouldNotShowUpdateWarning(baselines.newStyleProjectSdkImportAttributeBaseline); }); @@ -1130,7 +1130,7 @@ describe('Project: round trip updates', function (): void { const project = await Project.openProject(Uri.file(sqlProjPath).fsPath); should(spy.notCalled).be.true(); - should(project.isMsbuildSdkStyleProject).be.true(); + should(project.isSdkStyleProject).be.true(); } });