diff --git a/README.md b/README.md index 5a3d765..b90816c 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Analyze MSBuild binary logs (`.binlog`) with **GitHub Copilot Chat** and **MCP t @binlog /perf ``` -The [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/Microsoft.AITools.BinlogMcp) server (28 analysis tools) is auto-installed on first use. +The [Microsoft.AITools.BinlogMcp](https://www.nuget.org/packages/Microsoft.AITools.BinlogMcp) server (28 analysis tools) is auto-installed on first use. ## What You Get @@ -52,12 +52,12 @@ The [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts ## Troubleshooting: MCP Server Installation -The extension auto-installs [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/Microsoft.AITools.BinlogMcp) via `dotnet tool install -g`. In corporate environments with restricted NuGet feeds, this may fail. Here are the workarounds: +The extension auto-installs [Microsoft.AITools.BinlogMcp](https://www.nuget.org/packages/Microsoft.AITools.BinlogMcp) via `dotnet tool install -g`. In corporate environments with restricted NuGet feeds, this may fail. Here are the workarounds: -### 1. Install with explicit feed source +### 1. Install manually ```bash -dotnet tool install -g Microsoft.AITools.BinlogMcp --prerelease --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json +dotnet tool install -g Microsoft.AITools.BinlogMcp ``` ### 2. Diagnose NuGet issues @@ -67,9 +67,9 @@ dotnet nuget list source ``` Common problems: -- **dotnet-tools feed not configured** — the tool is published on the dotnet-tools Azure DevOps feed +- **nuget.org not configured** — the tool is published on nuget.org, the default NuGet feed - **Authenticated feed requires credentials** — may block access to the feed -- **Package source mapping** excludes the dotnet-tools feed for this package +- **Package source mapping** excludes nuget.org for this package ### 3. Verify installation @@ -81,7 +81,7 @@ binlog-mcp --help ## Related Projects - [MSBuild Structured Log Viewer](https://github.com/KirillOsenkov/MSBuildStructuredLog) — WPF viewer with secrets redaction -- [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/Microsoft.AITools.BinlogMcp) — MCP server for binlog analysis +- [Microsoft.AITools.BinlogMcp](https://www.nuget.org/packages/Microsoft.AITools.BinlogMcp) — MCP server for binlog analysis - [MSBuild Binary Log docs](https://learn.microsoft.com/en-us/visualstudio/msbuild/obtaining-build-logs-with-msbuild#save-a-binary-log) ## License diff --git a/src/extension.ts b/src/extension.ts index 8700b3a..dd13a09 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -30,7 +30,6 @@ let extensionContext: vscode.ExtensionContext | undefined; let openedViaUri = false; let optimizeInProgress = false; let cachedMcpExePath: string | null | undefined; // undefined = not searched yet -const DOTNET_TOOLS_FEED = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'; let codeLensRegistered = false; function escapeHtml(s: string): string { @@ -2140,11 +2139,11 @@ async function configureMcpServer(binlogPaths: string[], config: vscode.Workspac ...(workspaceCwd && { cwd: workspaceCwd }), }; vscode.window.showWarningMessage( - 'Could not find or install Microsoft.AITools.BinlogMcp. Install it manually: `dotnet tool install -g Microsoft.AITools.BinlogMcp --prerelease --add-source ' + DOTNET_TOOLS_FEED + '`', + 'Could not find or install Microsoft.AITools.BinlogMcp. Install it manually: `dotnet tool install -g Microsoft.AITools.BinlogMcp`', 'Copy Command' ).then(sel => { if (sel === 'Copy Command') { - vscode.env.clipboard.writeText('dotnet tool install -g Microsoft.AITools.BinlogMcp --prerelease --add-source ' + DOTNET_TOOLS_FEED); + vscode.env.clipboard.writeText('dotnet tool install -g Microsoft.AITools.BinlogMcp'); } }); } @@ -2315,9 +2314,8 @@ async function getLatestNuGetVersion(): Promise { const cp = require('child_process'); return new Promise((resolve) => { - // Search the dotnet-tools feed for the package (includes prereleases) - cp.execFile('dotnet', ['package', 'search', NUGET_PACKAGE_ID, '--exact-match', '--format', 'json', '--prerelease', - '--source', DOTNET_TOOLS_FEED], + // Search nuget.org for the package + cp.execFile('dotnet', ['package', 'search', NUGET_PACKAGE_ID, '--exact-match', '--format', 'json'], { timeout: 30000, encoding: 'utf8' }, (error: any, stdout: string) => { if (error) { @@ -2366,7 +2364,7 @@ async function updateMcpServer() { const result = await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, title: 'Updating Microsoft.AITools.BinlogMcp MCP server...' }, () => new Promise<{ success: boolean; output: string }>((resolve) => { - cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp'], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { resolve({ success: !err, output: (stderr || stdout || '').toString() }); }); }) @@ -2406,7 +2404,7 @@ async function applyPendingToolUpdate(): Promise { const result = await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, title: 'Updating Microsoft.AITools.BinlogMcp MCP server...' }, () => new Promise<{ success: boolean; output: string }>((resolve) => { - cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp'], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { resolve({ success: !err, output: (stderr || stdout || '').toString() }); }); }) @@ -2585,9 +2583,9 @@ async function installMcpTool(): Promise { const result = await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, title: 'Installing Microsoft.AITools.BinlogMcp MCP server (dotnet tool)...' }, () => new Promise((resolve) => { - cp.execFile('dotnet', ['tool', 'install', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null) => { + cp.execFile('dotnet', ['tool', 'install', '-g', 'Microsoft.AITools.BinlogMcp'], { timeout: 60000 }, (err: Error | null) => { if (err) { - cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, () => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp'], { timeout: 60000 }, () => { const exe = findMcpTool(); telemetry.trackToolInstall(!!exe); resolve(exe);