From 23c72f1a0cffd6bc2d4501bbd9e837d53e5c3910 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 30 Sep 2024 22:54:05 +0200 Subject: [PATCH 1/6] fix(lib): find VC.Tools.ARM64 on arm64 machine --- lib/find-visualstudio.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/find-visualstudio.js b/lib/find-visualstudio.js index 2dc1930fd7..070774ba2b 100644 --- a/lib/find-visualstudio.js +++ b/lib/find-visualstudio.js @@ -145,6 +145,7 @@ class VisualStudioFinder { version: process.env.VSCMD_VER, packages: [ 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', + 'Microsoft.VisualStudio.Component.VC.Tools.ARM64', // Assume MSBuild exists. It will be checked in processing. 'Microsoft.VisualStudio.VC.MSBuild.Base' ] @@ -429,11 +430,12 @@ class VisualStudioFinder { // Helper - process toolset information getToolset (info, versionYear) { - const pkg = 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64' + const vcTools = process.arch === 'arm64' ? 'VC.Tools.ARM64' : 'VC.Tools.x86.x64' + const pkg = `Microsoft.VisualStudio.Component.${vcTools}` const express = 'Microsoft.VisualStudio.WDExpress' if (info.packages.indexOf(pkg) !== -1) { - this.log.silly('- found VC.Tools.x86.x64') + this.log.silly(`- found ${vcTools}`) } else if (info.packages.indexOf(express) !== -1) { this.log.silly('- found Visual Studio Express (looking for toolset)') } else { From f0caedc8dbbc4e8e7574c96be21a32a0a488affa Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Sat, 5 Oct 2024 19:43:23 +0200 Subject: [PATCH 2/6] fall back to x64 if arm64 doesn't exist --- lib/find-visualstudio.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/find-visualstudio.js b/lib/find-visualstudio.js index 070774ba2b..4d28d16c4c 100644 --- a/lib/find-visualstudio.js +++ b/lib/find-visualstudio.js @@ -430,12 +430,20 @@ class VisualStudioFinder { // Helper - process toolset information getToolset (info, versionYear) { - const vcTools = process.arch === 'arm64' ? 'VC.Tools.ARM64' : 'VC.Tools.x86.x64' - const pkg = `Microsoft.VisualStudio.Component.${vcTools}` + const vcToolsArm64 = 'VC.Tools.ARM64'; + const pkgArm64 = `Microsoft.VisualStudio.Component.${vcToolsArm64}` + const vcToolsX64 = 'VC.Tools.x86.x64'; + const pkgX64 = `Microsoft.VisualStudio.Component.${vcToolsX64}` const express = 'Microsoft.VisualStudio.WDExpress' - if (info.packages.indexOf(pkg) !== -1) { - this.log.silly(`- found ${vcTools}`) + if (process.arch === 'arm64' && info.packages.indexOf(pkgArm64)) { + this.log.silly(`- found ${vcToolsArm64}`) + } else if (info.packages.indexOf(pkgX64) !== -1) { + if (process.arch === 'arm64') { + this.log.addLog(`- found ${vcToolsX64} on ARM64 platform. Expect less performance and/or link failure with ARM64 binary.`) + } else { + this.log.silly(`- found ${vcToolsX64}`) + } } else if (info.packages.indexOf(express) !== -1) { this.log.silly('- found Visual Studio Express (looking for toolset)') } else { From dbb2b3eb8e02b71160567669afc0a37495a19ec4 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Sat, 5 Oct 2024 19:45:13 +0200 Subject: [PATCH 3/6] lint fix --- lib/find-visualstudio.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/find-visualstudio.js b/lib/find-visualstudio.js index 4d28d16c4c..af4ca40050 100644 --- a/lib/find-visualstudio.js +++ b/lib/find-visualstudio.js @@ -430,9 +430,9 @@ class VisualStudioFinder { // Helper - process toolset information getToolset (info, versionYear) { - const vcToolsArm64 = 'VC.Tools.ARM64'; + const vcToolsArm64 = 'VC.Tools.ARM64' const pkgArm64 = `Microsoft.VisualStudio.Component.${vcToolsArm64}` - const vcToolsX64 = 'VC.Tools.x86.x64'; + const vcToolsX64 = 'VC.Tools.x86.x64' const pkgX64 = `Microsoft.VisualStudio.Component.${vcToolsX64}` const express = 'Microsoft.VisualStudio.WDExpress' From 417db33e0d903eb418008752c31fab5913beb5dc Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Sat, 5 Oct 2024 20:12:00 +0200 Subject: [PATCH 4/6] include check fix --- lib/find-visualstudio.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/find-visualstudio.js b/lib/find-visualstudio.js index af4ca40050..e9aa7fafdc 100644 --- a/lib/find-visualstudio.js +++ b/lib/find-visualstudio.js @@ -436,15 +436,15 @@ class VisualStudioFinder { const pkgX64 = `Microsoft.VisualStudio.Component.${vcToolsX64}` const express = 'Microsoft.VisualStudio.WDExpress' - if (process.arch === 'arm64' && info.packages.indexOf(pkgArm64)) { + if (process.arch === 'arm64' && info.packages.includes(pkgArm64)) { this.log.silly(`- found ${vcToolsArm64}`) - } else if (info.packages.indexOf(pkgX64) !== -1) { + } else if (info.packages.includes(pkgX64)) { if (process.arch === 'arm64') { - this.log.addLog(`- found ${vcToolsX64} on ARM64 platform. Expect less performance and/or link failure with ARM64 binary.`) + this.addLog(`- found ${vcToolsX64} on ARM64 platform. Expect less performance and/or link failure with ARM64 binary.`) } else { this.log.silly(`- found ${vcToolsX64}`) } - } else if (info.packages.indexOf(express) !== -1) { + } else if (info.packages.includes(express)) { this.log.silly('- found Visual Studio Express (looking for toolset)') } else { return null From 7ea806b596123fc4b8a3cf520ec211e92142e4b1 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Sat, 5 Oct 2024 20:36:52 +0200 Subject: [PATCH 5/6] add test with arm64 msvc only fixture --- .../VS_2022_BuildTools_arm64_only.txt | 423 ++++++++++++++++++ test/test-find-visualstudio.js | 38 ++ 2 files changed, 461 insertions(+) create mode 100644 test/fixtures/VS_2022_BuildTools_arm64_only.txt diff --git a/test/fixtures/VS_2022_BuildTools_arm64_only.txt b/test/fixtures/VS_2022_BuildTools_arm64_only.txt new file mode 100644 index 0000000000..39e4590f34 --- /dev/null +++ b/test/fixtures/VS_2022_BuildTools_arm64_only.txt @@ -0,0 +1,423 @@ +[ + { + "path": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools", + "version": "17.11.35222.181", + "packages": [ + "Microsoft.VisualStudio.Component.VC.Tools.ARM64", + "Microsoft.VisualStudio.VC.MSBuild.v170.ARM64.v143", + "Microsoft.VisualStudio.VC.MSBuild.v170.ARM64", + "Microsoft.VS.VC.vcvars.arm64.Shortcuts", + "Microsoft.VisualCpp.CA.Ext.Hostx64.TargetARM64", + "Microsoft.VC.14.41.17.11.CA.Ext.Hostx64.TargetARM64.base", + "Microsoft.VC.14.41.17.11.CA.Ext.Hostx64.TargetARM64.Res.base", + "Microsoft.VisualCpp.CA.Ext.Hostx86.TargetARM64", + "Microsoft.VC.14.41.17.11.CA.Ext.Hostx86.TargetARM64.base", + "Microsoft.VC.14.41.17.11.CA.Ext.Hostx86.TargetARM64.Res.base", + "Microsoft.VisualCpp.CA.Ext.HostARM64.TargetARM64", + "Microsoft.VC.14.41.17.11.CA.Ext.HostARM64.TargetARM64.base", + "Microsoft.VC.14.41.17.11.CA.Ext.HostARM64.TargetARM64.Res.base", + "Microsoft.VisualCpp.Tools.Hostx86.Targetarm64", + "Microsoft.VC.14.41.17.11.Tools.Hostx86.Targetarm64.base", + "Microsoft.VC.14.41.17.11.Tools.HostX86.TargetARM64.Res.base", + "Microsoft.VisualCpp.Tools.HostARM64.TargetARM64", + "Microsoft.VC.14.41.17.11.Tools.HostARM64.TargetARM64.base", + "Microsoft.VC.14.41.17.11.Tools.HostARM64.TargetARM64.Res.base", + "Microsoft.VisualCpp.CRT.Redist.ARM64.OneCore.Desktop", + "Microsoft.VC.14.40.17.10.CRT.Redist.ARM64.OneCore.Desktop.base", + "Microsoft.VisualCpp.CRT.Redist.ARM64", + "Microsoft.VC.14.40.17.10.CRT.Redist.ARM64.base", + "Microsoft.VisualCpp.CRT.ARM64.OneCore.Desktop", + "Microsoft.VC.14.41.17.11.CRT.ARM64.OneCore.Desktop.base", + "Microsoft.VC.14.41.17.11.CRT.ARM64.OneCore.Desktop.debug.base", + "Microsoft.VisualCpp.CRT.ARM64.Store", + "Microsoft.VC.14.41.17.11.CRT.ARM64.Store.base", + "Microsoft.VisualCpp.CRT.ARM64.Desktop", + "Microsoft.VC.14.41.17.11.CRT.ARM64.Desktop.base", + "Microsoft.VC.14.41.17.11.CRT.ARM64.Desktop.debug.base", + "Microsoft.VisualStudio.PackageGroup.VC.Tools.x64.ARM64", + "Microsoft.VisualCpp.Tools.Core", + "Microsoft.VisualCpp.PGO.ARM64", + "Microsoft.VC.14.41.17.11.PGO.ARM64.base", + "Microsoft.VisualCpp.Premium.Tools.Hostx86.Targetarm64", + "Microsoft.VC.14.41.17.11.Premium.Tools.Hostx86.Targetarm64.base", + "Microsoft.VC.14.41.17.11.Prem.HostX86.TargetARM64.Res.base", + "Microsoft.VisualCpp.Premium.Tools.HostX64.TargetARM64", + "Microsoft.VC.14.41.17.11.Premium.Tools.HostX64.TargetARM64.base", + "Microsoft.VC.14.41.17.11.Prem.HostX64.TargetARM64.Res.base", + "Microsoft.VisualCpp.Premium.Tools.ARM64.Base", + "Microsoft.VC.14.41.17.11.Premium.Tools.ARM64.Base.base", + "Microsoft.VisualCpp.Tools.HostX64.TargetARM64", + "Microsoft.VC.14.41.17.11.Tools.HostX64.TargetARM64.base", + "Microsoft.VC.14.41.17.11.Tools.HostX64.TargetARM64.Res.base", + "Microsoft.VC.14.41.17.11.Props.ARM64", + "Microsoft.VisualStudio.TestTools.TestWIExtension", + "Microsoft.VisualStudio.TestTools.TestPlatform.IDE", + "Microsoft.VisualStudio.VC.Ide.Pro", + "Microsoft.VisualStudio.VC.Ide.Pro.Resources", + "Microsoft.VisualStudio.VC.Templates.General", + "Microsoft.VisualStudio.VC.Templates.General.Resources", + "Microsoft.VisualStudio.VC.Items.Pro", + "Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Reduced", + "Microsoft.VisualStudio.VC.Ide.MDD", + "Microsoft.VisualStudio.PackageGroup.Core", + "Microsoft.VisualStudio.CodeSense.Community", + "Microsoft.VisualStudio.TestTools.TeamFoundationClient", + "Microsoft.PackageGroup.ClientDiagnostics", + "Microsoft.VisualStudio.AppResponsiveness", + "Microsoft.VisualStudio.AppResponsiveness.Targeted", + "Microsoft.VisualStudio.AppResponsiveness.Resources", + "Microsoft.VisualStudio.ClientDiagnostics", + "Microsoft.VisualStudio.ClientDiagnostics.Targeted", + "Microsoft.VisualStudio.Component.VC.Llvm.Clang", + "Microsoft.VisualStudio.VC.Llvm.Clang", + "Microsoft.VisualStudio.ClientDiagnostics.Resources", + "Microsoft.VisualStudio.PackageGroup.CommunityCore", + "Microsoft.VisualStudio.ProjectSystem.Full", + "Microsoft.VisualStudio.Product.BuildTools", + "Microsoft.VisualStudio.VC.Ide.Linux.ConnectionManager", + "Microsoft.VisualStudio.VC.Ide.Linux.ConnectionManager.Resources", + "Microsoft.VisualStudio.PackageGroup.TestTools.Core", + "Microsoft.VC.14.41.17.11.Props.x86", + "Microsoft.VC.14.41.17.11.Props", + "Microsoft.VisualCpp.RuntimeDebug.14", + "Microsoft.VisualCpp.RuntimeDebug.14.ARM64", + "Microsoft.VC.14.41.17.11.Tools.HostX86.TargetX86.Res.base", + "Microsoft.VisualCpp.Tools.Core.Resources", + "Microsoft.VisualCpp.Tools.Core.x86", + "Microsoft.VC.14.41.17.11.Tools.Core.Props", + "Microsoft.VisualCpp.Tools.Common.Utils", + "Microsoft.VisualCpp.Tools.Common.Utils.Resources", + "Microsoft.VisualCpp.DIA.SDK", + "Microsoft.VisualCpp.Servicing.DIASDK", + "Microsoft.VisualCpp.CRT.x86.Desktop", + "Microsoft.VisualStudio.Workload.VCTools", + "Microsoft.VC.14.41.17.11.CRT.x64.Desktop.base", + "Microsoft.VisualCpp.CRT.Source", + "Microsoft.VC.14.41.17.11.CRT.Source.base", + "Microsoft.VisualCpp.CRT.Headers", + "Microsoft.VC.14.41.17.11.CRT.Headers.Resources", + "Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset", + "Microsoft.VisualCpp.CRT.Redist.Resources", + "Microsoft.VC.14.41.17.11.CRT.Headers.Resources.base", + "Microsoft.VisualStudio.VC.MSBuild.Llvm", + "Microsoft.VisualStudio.VC.MSBuild.Llvm.Resources", + "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", + "Microsoft.VisualStudio.PackageGroup.TestTools.Native", + "Microsoft.VisualStudio.VC.Templates.UnitTest", + "Microsoft.VisualStudio.VC.Templates.UnitTest.Resources", + "Microsoft.VisualCpp.ATL.ARM64", + "Microsoft.VC.14.41.17.11.ATL.ARM64.base", + "Microsoft.VisualStudio.Community.VB.Targeted", + "Microsoft.VisualStudio.Community.VB.Neutral", + "Microsoft.VisualStudio.Community.CSharp.Targeted", + "Microsoft.VisualStudio.Community.CSharp.Neutral", + "Microsoft.VisualStudio.Community.ProductArch.TargetedExtra", + "Microsoft.VisualStudio.VC.MSBuild.Base", + "Microsoft.VisualStudio.VC.MSBuild.Base.Resources", + "Microsoft.VisualStudio.VC.Templates.Desktop", + "Microsoft.VisualStudio.Component.VC.CoreIde", + "Microsoft.VisualCpp.ATL.ARM64.Spectre", + "Microsoft.VisualStudio.Component.VC.ATL.ARM64", + "Microsoft.VisualCpp.CRT.x86.Store", + "Microsoft.VC.14.41.17.11.ATL.ARM64.Spectre.base", + "Microsoft.VC.14.41.17.11.CRT.x86.Store.base", + "Microsoft.VC.14.41.17.11.Props.ARM64.Spectre", + "Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre", + "Microsoft.VisualStudio.Community.x64", + "Microsoft.VisualStudio.Community.ProductArch.Targeted", + "Microsoft.VisualStudio.Community.ProductArch.NeutralExtra", + "Microsoft.IntelliTrace.CollectorCab", + "Microsoft.VisualStudio.Community.VB.Resources.Targeted", + "Microsoft.VisualStudio.Community.VB.Resources.Neutral", + "Microsoft.VisualStudio.Community.CSharp.Resources.Targeted", + "Microsoft.VisualStudio.Community.CSharp.Resources.Neutral", + "Microsoft.VisualStudio.Community.ProductArch.Resources.Targeted", + "Microsoft.VisualStudio.Community.ProductArch.Resources.NeutralExtra", + "Microsoft.VisualStudio.Community.ProductArch.Resources.Neutral", + "Microsoft.VisualStudio.WebSiteProject.DTE", + "Microsoft.VisualStudio.Diagnostics.AspNetHelper", + "Microsoft.MSHtml", + "Microsoft.VisualStudio.Platform.CallHierarchy", + "Microsoft.VisualStudio.Community.ProductArch.Neutral", + "Microsoft.VisualStudio.Community.Msi.Resources", + "Microsoft.VisualStudio.Community.Msi", + "Microsoft.VisualStudio.Community.Shared.Msi", + "Microsoft.VisualStudio.MinShell.Interop.Msi", + "Microsoft.VisualStudio.MinShell.Interop.Shared.Msi", + "Microsoft.VisualStudio.PackageGroup.CoreEditor", + "Microsoft.VisualStudio.ScriptedHost", + "Microsoft.VisualStudio.ScriptedHost.Targeted", + "Microsoft.VisualStudio.VirtualTree", + "Microsoft.VisualStudio.PackageGroup.Progression", + "Microsoft.VisualStudio.PerformanceProvider", + "Microsoft.VisualStudio.GraphModel", + "Microsoft.VisualStudio.GraphProvider", + "Microsoft.VisualStudio.TextMateGrammars", + "Microsoft.VisualStudio.Platform.Markdown", + "Microsoft.VisualStudio.PackageGroup.TeamExplorer.Common", + "Microsoft.VisualStudio.PackageGroup.ServiceHub", + "Microsoft.ServiceHub.Node", + "Microsoft.ServiceHub.Managed", + "Microsoft.VisualStudio.OpenFolder.VSIX", + "Microsoft.VisualStudio.FileHandler.Msi", + "Microsoft.VisualStudio.FileHandler.Msi", + "Microsoft.VisualStudio.PackageGroup.MinShell", + "Microsoft.VisualStudio.MinShell.Msi", + "Microsoft.VisualStudio.MinShell.Shared.Msi", + "Microsoft.VisualStudio.MinShell.Msi.Resources", + "Microsoft.VisualStudio.MinShell.Interop", + "Microsoft.VisualStudio.Log", + "Microsoft.VisualStudio.Log.Targeted", + "Microsoft.VisualStudio.Log.Resources", + "Microsoft.VisualStudio.Finalizer", + "Microsoft.VisualStudio.CoreEditor", + "Microsoft.VisualStudio.Platform.NavigateTo", + "Microsoft.VisualStudio.Connected", + "Microsoft.VisualStudio.Identity", + "Microsoft.Developer.IdentityServiceGS", + "SQLitePCLRaw", + "SQLitePCLRaw.Targeted", + "Microsoft.VisualStudio.Connected.Auto", + "Microsoft.VisualStudio.Connected.Auto.Resources", + "Microsoft.VisualStudio.Connected.Resources", + "Microsoft.VisualStudio.VC.Ide.x64", + "Microsoft.VisualStudio.PackageGroup.VC.CoreIDE.Express", + "Microsoft.VisualStudio.PackageGroup.Debugger.Script", + "Microsoft.VisualStudio.Debugger.Script", + "Microsoft.VisualStudio.Debugger.Script.Resources", + "Microsoft.VisualStudio.Debugger.Script.Remote", + "Microsoft.WebView2", + "Microsoft.VisualStudio.Debugger.Script.Remote", + "Microsoft.VisualStudio.Debugger.Script.Remote.Resources", + "Microsoft.VisualStudio.Debugger.Script.Remote.Resources", + "Microsoft.VisualStudio.VC.Ide.WinXPlus", + "Microsoft.VisualStudio.VC.Ide.Dskx", + "Microsoft.VisualStudio.VC.Ide.Dskx.Resources", + "Microsoft.VisualStudio.VC.Ide.Base", + "Microsoft.VisualStudio.VC.Ide.LanguageService", + "Microsoft.VisualStudio.VC.Copilot.Setup", + "Microsoft.VisualStudio.VC.Ide.VCPkgDatabase", + "Microsoft.VisualStudio.VC.Ide.ResourceEditor", + "Microsoft.VisualStudio.VC.Ide.ResourceEditor.Resources", + "Microsoft.VisualStudio.VC.Ide.Core", + "Microsoft.VisualStudio.VisualC.Utilities", + "Microsoft.VisualStudio.VisualC.Utilities.Resources", + "Microsoft.VisualStudio.VC.Ide.ProjectSystem", + "Microsoft.VisualStudio.VC.Ide.ProjectSystem.Resources", + "Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine", + "Microsoft.VisualStudio.VC.Ide.Core.VCProjectEngine.Resources", + "Microsoft.VisualStudio.VC.Ide.LanguageService.Resources", + "Microsoft.VisualStudio.VC.Llvm.Base", + "CoreEditorFonts", + "Microsoft.VisualStudio.VC.Ide.Base.Resources", + "Microsoft.VisualStudio.Component.TextTemplating", + "Microsoft.VisualStudio.PackageGroup.Debugger.Core", + "Microsoft.VisualStudio.Debugger.BrokeredServices", + "Microsoft.VisualStudio.Debugger.VSCodeDebuggerHost", + "Microsoft.VisualStudio.Debugger.AzureAttach", + "Microsoft.VisualStudio.Web.Azure.Common", + "Microsoft.WebTools.Shared", + "Microsoft.WebTools.DotNet.Core.ItemTemplates", + "Microsoft.VisualStudio.PackageGroup.Debugger.TimeTravel.Replay", + "Microsoft.VisualStudio.VC.Ide.Debugger", + "Microsoft.VisualStudio.VC.Ide.Debugger.Concord", + "Microsoft.VisualStudio.VC.Ide.Debugger.Concord.Resources", + "Microsoft.VisualStudio.VC.Ide.Debugger.Resources", + "Microsoft.VisualStudio.VC.Ide.Common", + "Microsoft.VisualStudio.VC.Ide.Common.Resources", + "Microsoft.VisualStudio.Debugger.CollectionAgents", + "Microsoft.VisualStudio.Debugger.Parallel", + "Microsoft.VisualStudio.Debugger.Parallel.Resources", + "Microsoft.VisualStudio.Debugger.Managed", + "Microsoft.DiaSymReader", + "Microsoft.CodeAnalysis.ExpressionEvaluator", + "Microsoft.VisualStudio.Debugger.Concord.Managed", + "Microsoft.VisualStudio.Debugger.Concord.Managed.Resources", + "Microsoft.VisualStudio.Debugger.Managed.Resources", + "Microsoft.VisualStudio.Debugger.TargetComposition", + "Microsoft.VisualStudio.Debugger.TargetComposition.Remote.arm64", + "Microsoft.VisualStudio.Debugger.TargetComposition.Remote", + "Microsoft.VisualStudio.Debugger.TargetComposition.Remote", + "Microsoft.VisualStudio.Debugger.Remote", + "Microsoft.VisualStudio.Debugger.Concord.Remote", + "Microsoft.VisualStudio.Debugger.Concord.Remote.Resources", + "Microsoft.VisualStudio.VC.Ide.LanguageService.Dependencies", + "Microsoft.VisualStudio.Debugger.Remote", + "Microsoft.VisualStudio.Debugger.Remote.ARM64", + "Microsoft.VisualStudio.Debugger.Concord.Remote.ARM64", + "Microsoft.VisualStudio.Debugger.Concord.Remote.Resources.ARM64", + "Microsoft.VisualStudio.Debugger.Remote.ARM", + "Microsoft.VisualStudio.Debugger.Concord.Remote.ARM", + "Microsoft.VisualStudio.Debugger.Concord.Remote.Resources.ARM", + "Microsoft.VisualStudio.Debugger.Remote.Resources.ARM", + "Microsoft.VisualStudio.Debugger.Remote.Resources.ARM64", + "Microsoft.VisualStudio.Debugger.Concord.Remote", + "Microsoft.VisualStudio.Debugger.Concord.Remote.Resources", + "Microsoft.VisualStudio.Debugger.Remote.Resources", + "Microsoft.VisualStudio.Debugger.Remote.Resources", + "Microsoft.VisualStudio.Debugger", + "Microsoft.VisualStudio.AzureSDK", + "Microsoft.VisualStudio.Editors", + "Microsoft.VisualStudio.VC.MSVCDis", + "Microsoft.IntelliTrace.DiagnosticsHub", + "Microsoft.VisualStudio.MinShell", + "Microsoft.VisualStudio.Copilot.Contracts", + "Microsoft.VisualStudio.Licensing", + "Microsoft.VisualStudio.IdentityDependencies", + "Microsoft.VisualStudio.GitHubProtocolHandler.Msi", + "Microsoft.VisualStudio.VsWebProtocolSelector.Msi", + "Microsoft.VisualStudio.Extensibility.Container", + "Microsoft.VisualStudio.LanguageServer", + "Microsoft.VisualStudio.MefHosting", + "Microsoft.VisualStudio.Initializer", + "Microsoft.VisualStudio.ExtensionManager", + "Microsoft.VisualStudio.ExtensionManager.Auto", + "Microsoft.VisualStudio.Platform.Editor", + "Microsoft.VisualStudio.MinShell.Targeted", + "Microsoft.VisualStudio.Devenv.Config", + "Microsoft.VisualStudio.MinShell.Resources", + "Microsoft.VisualStudio.UIInternal.Guide", + "Microsoft.VisualStudio.UIInternal", + "Microsoft.VisualStudio.UIInternal.Resources", + "Microsoft.VisualStudio.CoreDotNet", + "Microsoft.VisualStudio.MinShell.Auto", + "Microsoft.VisualStudio.MinShell.Auto.Resources", + "Microsoft.VisualStudio.Debugger.Concord", + "Microsoft.VisualStudio.Debugger.Concord.Resources", + "Microsoft.VisualStudio.Debugger.Resources", + "Microsoft.DiaSymReader.PortablePdb", + "Microsoft.VisualStudio.PerfLib", + "Microsoft.VisualStudio.Debugger.Package.DiagHub.Client", + "Microsoft.VisualStudio.Debugger.Remote.DiagnosticsHub.Client", + "Microsoft.VisualStudio.Debugger.Remote.DiagnosticsHub.Client", + "Microsoft.VisualStudio.Debugger.Remote.DiagnosticsHub.Client", + "Microsoft.VisualStudio.TextTemplating.MSBuild", + "Microsoft.VisualStudio.TextTemplating.Integration", + "Microsoft.VisualStudio.TextTemplating.Core", + "Microsoft.VisualStudio.PackageGroup.Roslyn.LanguageServices", + "Microsoft.CodeAnalysis.VisualStudio.Setup", + "Microsoft.VisualStudio.TextTemplating.Integration.Resources", + "Microsoft.VC.14.41.17.11.Props.IFC", + "Microsoft.VisualStudio.Component.VC.ASAN", + "Microsoft.VisualCpp.ASAN.X86", + "Microsoft.VC.14.41.17.11.ASAN.X86.base", + "Microsoft.VC.14.41.17.11.ASAN.X64.base", + "Microsoft.VC.14.41.17.11.ASAN.Headers.base", + "Microsoft.VC.14.41.17.11.Props.ATLMFC", + "Microsoft.VisualCpp.ATL.Source", + "Microsoft.VC.14.41.17.11.ATL.Source.base", + "Microsoft.VisualCpp.ATL.Headers", + "Microsoft.VC.14.41.17.11.ATL.Headers.base", + "Microsoft.VC.14.41.17.11.Servicing.ATL", + "Microsoft.VisualStudio.Component.TestTools.BuildTools", + "Microsoft.VisualStudio.PackageGroup.TestTools.BuildTools", + "Microsoft.VisualStudio.PackageGroup.TestTools.CodeCoverage", + "Microsoft.VisualStudio.TestTools.DynamicCodeCoverage", + "Microsoft.CodeCoverage.Console.Targeted", + "Microsoft.VisualStudio.TestTools.TestPlatform.V1.CLI", + "Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.V2.CLI", + "Microsoft.VisualStudio.TestTools.TestPlatform.V2.CLI", + "Microsoft.VisualStudio.Component.Windows11SDK.22621", + "Microsoft.VisualStudio.VC.UnitTest.Desktop.Build.Core", + "Microsoft.VisualStudio.TestTools.TestPlatform.V1.CPP", + "Microsoft.VisualStudio.Component.VC.Redist.14.Latest", + "Microsoft.VC.14.41.17.11.CA.Rulesets.base", + "Microsoft.VC.14.41.17.11.Servicing.CARulesets", + "Microsoft.VC.14.41.17.11.Servicing.CAExtensions", + "Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX86.base", + "Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX86.Res.base", + "Microsoft.VisualCpp.Tools.HostX64.TargetX64", + "Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX64.base", + "Microsoft.VC.14.41.17.11.Tools.HostX64.TargetX64.Res.base", + "Microsoft.VisualCpp.Tools.HostARM64.TargetX86", + "Microsoft.VC.14.41.17.11.Tools.HostARM64.TargetX86.base", + "Microsoft.VC.14.41.17.11.Tools.HostARM64.TargetX86.Res.base", + "Microsoft.VisualCpp.Premium.Tools.HostX86.TargetX86", + "Microsoft.VC.14.41.17.11.Premium.Tools.HostX86.TargetX86.base", + "Microsoft.VisualStudio.Component.VC.Modules.ARM64", + "Microsoft.VC.14.41.17.11.Prem.HostX86.TargetX86.Res.base", + "Microsoft.VisualCpp.Premium.Tools.HostX64.TargetX64", + "Microsoft.VC.14.41.17.11.Premium.Tools.HostX64.TargetX64.base", + "Microsoft.VC.14.41.17.11.Prem.HostX64.TargetX64.Res.base", + "Microsoft.Build.Arm64", + "Microsoft.Build.UnGAC", + "Microsoft.VisualStudio.VC.Icons", + "Microsoft.VisualCpp.CRT.x86.OneCore.Desktop", + "Microsoft.VC.14.41.17.11.CRT.x86.OneCore.Desktop.base", + "Microsoft.VisualCpp.CRT.x64.Store", + "Microsoft.VC.14.41.17.11.CRT.x64.Store.base", + "Microsoft.VisualStudio.InstrumentationEngine.ARM64", + "Microsoft.VisualStudio.InstrumentationEngine", + "Microsoft.VisualCpp.CRT.x64.OneCore.Desktop", + "Microsoft.VC.14.41.17.11.CRT.x64.OneCore.Desktop.base", + "Microsoft.VC.14.41.17.11.Tools.HostX86.TargetX64.base", + "Microsoft.VC.14.41.17.11.Props.x64", + "Microsoft.VC.14.41.17.11.Tools.Hostx86.Targetx64.Res.base", + "Win11SDK_10.0.22621", + "Microsoft.VisualCpp.Tools.HostX86.TargetX86", + "Microsoft.VC.14.41.17.11.Tools.HostX86.TargetX86.base", + "Microsoft.VC.14.41.17.11.Servicing.Compilers", + "Microsoft.VisualCpp.Redist.14.Latest", + "Microsoft.VisualCpp.Redist.14.Latest", + "Microsoft.VisualStudio.LiveShareApi", + "Microsoft.VisualStudio.ProjectSystem.Query", + "Microsoft.VisualStudio.Component.VC.Tools.ARM64EC", + "Microsoft.VisualCpp.CRT.ARM64EC.Store", + "Microsoft.VisualStudio.VC.MSBuild.v170.ARM64EC.v143", + "Microsoft.VC.14.41.17.11.CRT.ARM64EC.Store.base", + "Microsoft.VisualStudio.VC.MSBuild.v170.ARM64EC", + "Microsoft.VC.14.41.17.11.CRT.x86.Desktop.base", + "Microsoft.VisualCpp.CRT.x64.Desktop", + "Microsoft.VisualStudio.ProjectSystem", + "Microsoft.VisualStudio.Community.x86", + "Microsoft.VisualCpp.IFC.arm64", + "Microsoft.VisualCpp.Redist.14", + "Microsoft.VisualCpp.Redist.14", + "Microsoft.VisualCpp.Servicing.Redist", + "Microsoft.VisualStudio.PackageGroup.TestTools.TestPlatform.IDE", + "Microsoft.VC.14.41.17.11.CRT.Headers.base", + "Microsoft.VC.14.41.17.11.Servicing.CrtHeaders", + "Microsoft.VC.14.41.17.11.Servicing", + "Microsoft.VisualStudio.Component.VC.CoreBuildTools", + "Microsoft.VisualStudio.VC.vcvars", + "Microsoft.VS.VC.vcvars.x86.Shortcuts", + "Microsoft.Windows.UniversalCRT.Redistributable.Msi", + "Microsoft.VS.VC.vcvars.x64.Shortcuts", + "Microsoft.VS.VC.vcvars.arm64_x64.Shortcuts", + "Microsoft.VisualStudio.Component.Windows10SDK", + "Microsoft.VisualStudio.VC.MSBuild.v170.x86.v143", + "Microsoft.VisualStudio.VC.MSBuild.v170.X86", + "Microsoft.VisualStudio.VC.MSBuild.v170.X64.v143", + "Microsoft.VisualStudio.VC.MSBuild.v170.X64", + "Microsoft.VisualStudio.VC.MSBuild.v170.ARM.v143", + "Microsoft.VisualStudio.VC.MSBuild.v170.ARM", + "Microsoft.VisualStudio.VC.MSBuild.v170.Base", + "Microsoft.VisualStudio.VC.MSBuild.v170.Base.Resources", + "Microsoft.VisualStudio.Workload.MSBuildTools", + "Microsoft.VisualStudio.Component.CoreBuildTools", + "Microsoft.VisualStudio.Setup.Configuration", + "Microsoft.VisualStudio.PackageGroup.Setup.Common", + "Microsoft.VisualStudio.Setup.WMIProvider", + "Microsoft.VisualStudio.Setup.Configuration.Interop", + "Microsoft.VisualStudio.PackageGroup.VsDevCmd", + "Microsoft.VisualStudio.VsDevCmd.Ext.NetFxSdk", + "Microsoft.VisualStudio.VsDevCmd.Core.WinSdk", + "Microsoft.VisualStudio.VsDevCmd.Core.DotNet", + "Microsoft.VisualStudio.VC.DevCmd", + "Microsoft.VisualStudio.VC.DevCmd.Resources", + "Microsoft.VisualStudio.BuildTools.Resources", + "Microsoft.VisualStudio.Net.Eula.Resources", + "Microsoft.Build.Dependencies", + "Microsoft.NuGet.Build.Tasks.Setup", + "Microsoft.Build.FileTracker.Msi", + "Microsoft.Component.MSBuild", + "Microsoft.PythonTools.BuildCore.Vsix", + "Microsoft.VisualStudio.Component.Roslyn.Compiler", + "Microsoft.CodeAnalysis.Compilers", + "Microsoft.VisualStudio.NativeImageSupport", + "Microsoft.Build", + "Microsoft.VisualStudio.PackageGroup.NuGet", + "Microsoft.VisualStudio.NuGet.BuildTools" + ] + } +] diff --git a/test/test-find-visualstudio.js b/test/test-find-visualstudio.js index 9cad33eb4e..64ff7db6da 100644 --- a/test/test-find-visualstudio.js +++ b/test/test-find-visualstudio.js @@ -462,6 +462,44 @@ describe('find-visualstudio', function () { }) }) + it('VS2022 Build Tools with ARM64 MSVC only', async function () { + if (process.arch !== 'arm64') { + return; + } + + const msBuildPath = 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\' + + 'BuildTools\\MSBuild\\Current\\Bin\\arm64\\MSBuild.exe' + + const finder = new TestVisualStudioFinder(semverV1, null) + + poison(finder, 'regSearchKeys') + poison(finder, 'findVisualStudio2017') + finder.msBuildPathExists = (path) => { + return true + } + finder.findNewVSUsingSetupModule = async () => null + finder.findVisualStudio2019OrNewer = async () => { + const file = path.join(__dirname, 'fixtures', + 'VS_2022_BuildTools_arm64_only.txt') + const data = fs.readFileSync(file) + const parsedData = finder.parseData(null, data, '', { checkIsArray: true }) + return finder.processData(parsedData, [2019, 2022]) + } + const { err, info } = await finder.findVisualStudio() + assert.strictEqual(err, null) + assert.deepStrictEqual(info, { + msBuild: msBuildPath, + path: + 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools', + sdk: '10.0.22621.0', + toolset: 'v143', + version: '17.11.35222.181', + versionMajor: 17, + versionMinor: 11, + versionYear: 2022 + }) + }) + it('VSSetup: VS2022 with C++ workload without SDK', async function () { const finder = new TestVisualStudioFinder(semverV1, null) finder.msBuildPathExists = (path) => { From f2891a49467e2d4aa12977c95eb522d6ca817e21 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 7 Oct 2024 08:41:32 +0200 Subject: [PATCH 6/6] lint fix --- test/test-find-visualstudio.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test-find-visualstudio.js b/test/test-find-visualstudio.js index 64ff7db6da..e53b6678ed 100644 --- a/test/test-find-visualstudio.js +++ b/test/test-find-visualstudio.js @@ -464,7 +464,7 @@ describe('find-visualstudio', function () { it('VS2022 Build Tools with ARM64 MSVC only', async function () { if (process.arch !== 'arm64') { - return; + return } const msBuildPath = 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\' +