From ccbc40f5fbc84a3275e40351ba84a04d993d6d6e Mon Sep 17 00:00:00 2001 From: Roe-xin Date: Tue, 17 Mar 2026 10:20:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20Vivado=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=A3=80=E6=B5=8B=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用环境变量中的 vivado 命令替代磁盘路径搜索 - 修改验证逻辑,支持环境变量命令 - 简化自动检测函数实现 --- src/utils/vivadoConfig.ts | 42 +++++++++++---------------------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/src/utils/vivadoConfig.ts b/src/utils/vivadoConfig.ts index 9d7b44d..0c5d996 100644 --- a/src/utils/vivadoConfig.ts +++ b/src/utils/vivadoConfig.ts @@ -51,9 +51,11 @@ export function validateConfig(config: VivadoConfig): string | null { if (!config.enabled) { return 'Vivado 未启用'; } - if (!fs.existsSync(config.executablePath)) { + // 如果是完整路径,检查文件是否存在 + if (path.isAbsolute(config.executablePath) && !fs.existsSync(config.executablePath)) { return `Vivado 可执行文件不存在: ${config.executablePath}`; } + // 环境变量命令不检查,运行时会自动报错 return null; } @@ -72,34 +74,14 @@ export function resolveWorkingDir(workingDir: string): string { * 自动检测 Vivado */ function autoDetectVivado(): VivadoConfig | null { - const drives = ['C', 'D', 'E', 'F', 'G']; + const workspaceFolder = vscode.workspace.workspaceFolders?.[0]; - for (const drive of drives) { - const vivadoDir = `${drive}:\\Xilinx\\Vivado`; - if (!fs.existsSync(vivadoDir)) { - continue; - } - - // 读取所有版本目录 - const versions = fs.readdirSync(vivadoDir) - .filter(v => fs.statSync(path.join(vivadoDir, v)).isDirectory()) - .sort() - .reverse(); // 最新版本在前 - - for (const version of versions) { - const p = path.join(vivadoDir, version, 'bin', 'vivado.bat'); - if (fs.existsSync(p)) { - const workspaceFolder = vscode.workspace.workspaceFolders?.[0]; - return { - enabled: true, - executablePath: p, - workingDir: workspaceFolder - ? path.join(workspaceFolder.uri.fsPath, 'vivado_projects') - : `${drive}:\\vivado_projects` - }; - } - } - } - - return null; + // 默认使用环境变量中的 vivado 命令 + return { + enabled: true, + executablePath: 'vivado', + workingDir: workspaceFolder + ? path.join(workspaceFolder.uri.fsPath, 'vivado_projects') + : path.join(process.env.USERPROFILE || 'C:\\Users\\Default', 'vivado_projects') + }; }