diff --git a/.github/workflows/branch-snap.yml b/.github/workflows/branch-snap.yml index 53ecc9b91..17640ea2f 100644 --- a/.github/workflows/branch-snap.yml +++ b/.github/workflows/branch-snap.yml @@ -28,8 +28,8 @@ jobs: - name: Install NodeJS uses: actions/setup-node@v4 with: - node-version: '18.x' - - name: Install dependencies + node-version: '24.x' + - name: Install dependencies run: npm ci - name: Update version.json run: | @@ -59,8 +59,8 @@ jobs: - name: Install NodeJS uses: actions/setup-node@v4 with: - node-version: '18.x' - - name: Install dependencies + node-version: '24.x' + - name: Install dependencies run: npm ci - name: Update version.json for release run: npx gulp updateVersionForStableRelease diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 546d9036a..17b8a521a 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -28,13 +28,13 @@ jobs: # Install Node.js (required for TypeScript compilation and npm packages) - uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' cache: 'npm' # Install .NET SDK (required for some build components and MSBuild tasks) - uses: actions/setup-dotnet@v4 with: - dotnet-version: '8.0.x' + dotnet-version: '10.0.x' # Install npm dependencies - name: Install dependencies @@ -52,4 +52,4 @@ jobs: - name: Install dependencies run: gulp installDependencies - + diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml index 8f3bc0536..1628a2041 100644 --- a/.github/workflows/update-changelog.yml +++ b/.github/workflows/update-changelog.yml @@ -22,7 +22,7 @@ jobs: - name: Install NodeJS uses: actions/setup-node@v4 with: - node-version: '20.x' + node-version: '24.x' - name: Install dependencies run: npm ci - name: Update CHANGELOG diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6cd528c0..54fd0dc0c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,10 +23,10 @@ Setting up your local development environment for the vscode-csharp repository i Before you start, make sure you have the following software installed on your machine: -* Node.js v20 ([v20.17.0 LTS](https://nodejs.org/en/blog/release/v20.17.0)). +* Node.js v24 ([24.13.0 LTS](https://nodejs.org/en/blog/release/v24.13.0)). * Note - Building with higher major versions of Node.js is not advised - it may work but we do not test it. * Npm (The version shipped with node is fine) -* .NET 8.0 SDK (dotnet should be on your path) +* .NET 10.0 SDK (dotnet should be on your path) Once you have these installed, you can navigate to the cloned vscode-csharp repository to proceed with building, running, and testing the repository. diff --git a/azure-pipelines/build-vsix.yml b/azure-pipelines/build-vsix.yml index 89b046895..50e99a7eb 100644 --- a/azure-pipelines/build-vsix.yml +++ b/azure-pipelines/build-vsix.yml @@ -138,7 +138,6 @@ stages: displayName: Use .NET Core sdk 8.0.x inputs: version: 8.0.x - # If we're in an official build, install the signing plugin - ${{ if eq(parameters.isOfficial, true) }}: - task: MicroBuildSigningPlugin@4 diff --git a/azure-pipelines/green-insertion.yml b/azure-pipelines/green-insertion.yml index e07723e7e..5a139584d 100644 --- a/azure-pipelines/green-insertion.yml +++ b/azure-pipelines/green-insertion.yml @@ -31,11 +31,7 @@ jobs: vmImage: ubuntu-latest steps: - checkout: none - - task: NodeTool@0 - displayName: ⚙️ Install Node.js - inputs: - versionSource: spec - versionSpec: 16.x + - template: /azure-pipelines/install-node.yml@self - powershell: | "registry=https://pkgs.dev.azure.com/devdiv/DevDiv/_packaging/vs-green/npm/registry/`nalways-auth=true`n" | Tee-Object -FilePath '$(Pipeline.Workspace)/.npmrc' displayName: ⚙️ Prepare for publish diff --git a/azure-pipelines/install-node.yml b/azure-pipelines/install-node.yml index 72aaac84b..8e3a9529b 100644 --- a/azure-pipelines/install-node.yml +++ b/azure-pipelines/install-node.yml @@ -1,5 +1,5 @@ steps: - task: NodeTool@0 - displayName: 'Install Node.js 20.x' + displayName: 'Install Node.js 24.x' inputs: - versionSpec: '20.x' \ No newline at end of file + versionSpec: '24.x' diff --git a/azure-pipelines/loc.yml b/azure-pipelines/loc.yml index 438e3b5ac..d12735f86 100644 --- a/azure-pipelines/loc.yml +++ b/azure-pipelines/loc.yml @@ -58,17 +58,13 @@ extends: condition: ${{ parameters.publishLocalizationFile }} artifactName: l10n steps: - - task: NodeTool@0 - displayName: 'Install Node.js 18.x' - inputs: - # Octokit client needs 18.x to have 'fetch' function. - versionSpec: '18.x' + - template: /azure-pipelines/install-node.yml@self - checkout: self clean: true submodules: true fetchTags: false fetchDepth: 0 - - pwsh: | + - pwsh: | npm install npm install -g gulp --globalconfig $(Build.SourcesDirectory)/.npmrc displayName: 'Install tools' diff --git a/msbuild/global.json b/msbuild/global.json index bcb55ab5e..d88274b94 100644 --- a/msbuild/global.json +++ b/msbuild/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "8.0.415", + "version": "10.0.101", "rollForward": "latestMajor" }, "msbuild-sdks": { "Microsoft.Build.NoTargets": "3.7.0" } -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index 4e05f460d..7241576c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "@types/fs-extra": "11.0.4", "@types/gulp": "4.0.5", "@types/minimist": "1.2.1", - "@types/node": "20.14.8", + "@types/node": "24.10.8", "@types/semver": "7.3.13", "@types/tmp": "0.0.33", "@types/uuid": "^9.0.1", @@ -3579,13 +3579,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.8", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-20.14.8.tgz", - "integrity": "sha1-RcJqKl3ibDU0qVBFMN2zsnzgMaw=", + "version": "24.10.8", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-24.10.8.tgz", + "integrity": "sha1-m1KdMuflrbdLE9H8m4NhXpoSpwE=", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.16.0" } }, "node_modules/@types/normalize-package-data": { @@ -13625,9 +13625,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha1-vNU5iT0AtW6WT9JlekhmsiGmVhc=", + "version": "7.16.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha1-/8zf82rqSITL/OmnUKBYAiT1ikY=", "dev": true, "license": "MIT" }, @@ -16972,12 +16972,12 @@ "dev": true }, "@types/node": { - "version": "20.14.8", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-20.14.8.tgz", - "integrity": "sha1-RcJqKl3ibDU0qVBFMN2zsnzgMaw=", + "version": "24.10.8", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-24.10.8.tgz", + "integrity": "sha1-m1KdMuflrbdLE9H8m4NhXpoSpwE=", "dev": true, "requires": { - "undici-types": "~5.26.4" + "undici-types": "~7.16.0" } }, "@types/normalize-package-data": { @@ -24270,9 +24270,9 @@ "dev": true }, "undici-types": { - "version": "5.26.5", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha1-vNU5iT0AtW6WT9JlekhmsiGmVhc=", + "version": "7.16.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha1-/8zf82rqSITL/OmnUKBYAiT1ikY=", "dev": true }, "unicorn-magic": { diff --git a/package.json b/package.json index 7b3034b3d..54657c974 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "@types/fs-extra": "11.0.4", "@types/gulp": "4.0.5", "@types/minimist": "1.2.1", - "@types/node": "20.14.8", + "@types/node": "24.10.8", "@types/semver": "7.3.13", "@types/tmp": "0.0.33", "@types/uuid": "^9.0.1", diff --git a/tasks/createTagsTasks.ts b/tasks/createTagsTasks.ts index b74cd211e..871618717 100644 --- a/tasks/createTagsTasks.ts +++ b/tasks/createTagsTasks.ts @@ -65,7 +65,7 @@ gulp.task('createTags:vscode-csharp', async (): Promise => { options, 'dotnet', 'vscode-csharp', - async (releaseCommit: string, githubPAT: string) => releaseCommit, + async (releaseCommit: string, _githubPAT: string) => releaseCommit, (releaseVersion: string, isPrerelease: boolean): [string, string] => { const prereleaseText = isPrerelease ? '-prerelease' : ''; return [`v${releaseVersion}${prereleaseText}`, releaseVersion]; diff --git a/tasks/snapTasks.ts b/tasks/snapTasks.ts index fa7ef6227..8516f974a 100644 --- a/tasks/snapTasks.ts +++ b/tasks/snapTasks.ts @@ -75,7 +75,7 @@ function addChangelogSection(version: string, additionalLines?: string[]): void const headerRegex = /^#+\s+.*$/gm; const matches = []; for (let i = 0; i < changelogLines.length; i++) { - const line = changelogLines.at(i); + const line = changelogLines[i]; const match = headerRegex.exec(line!); if (match) { matches.push({ line: i, text: match[0] }); @@ -201,7 +201,7 @@ const prRegex = /^\*.+\(PR: \[#(\d+)\]\(/; function findNextVersionHeaderLine(changelogLines: string[], startLine: number = 0): [number, string] { const headerRegex = /^#\s(\d+\.\d+)\.(x|\d+)$/; for (let i = startLine; i < changelogLines.length; i++) { - const line = changelogLines.at(i); + const line = changelogLines[i]; const match = headerRegex.exec(line!); if (match) { return [i, match[1]]; @@ -213,7 +213,7 @@ function findNextVersionHeaderLine(changelogLines: string[], startLine: number = function getPrIdsBetweenHeaders(changelogLines: string[], startLine: number, endLine: number): string[] { const prs: string[] = []; for (let i = startLine; i < endLine; i++) { - const line = changelogLines.at(i); + const line = changelogLines[i]; const match = prRegex.exec(line!); if (match) { prs.push(match[1]); diff --git a/test/vscodeLauncher.ts b/test/vscodeLauncher.ts index a4fdbf3dd..13df07858 100644 --- a/test/vscodeLauncher.ts +++ b/test/vscodeLauncher.ts @@ -30,9 +30,9 @@ export async function prepareVSCodeAndExecuteTests( // Rather than having to uninstall Dev Kit between different test runs, we use workspace settings // to control which extensions are active - and we always install Dev Kit. const extensionsToInstall = [ - 'ms-dotnettools.vscode-dotnet-runtime@2.3.4', + 'ms-dotnettools.vscode-dotnet-runtime@3.0.0', 'ms-dotnettools.csharp', - 'ms-dotnettools.csdevkit@1.16.6', + 'ms-dotnettools.csdevkit@1.92.5', ]; await installExtensions(extensionsToInstall, cli, args);