离线状态下如何在VSCode中调试Blazor API?
离线状态下VSCode调试Blazor API的解决方法
报错信息(翻译后)
MSBuild版本17.9.8+b34f75857 for .NET C:\Program Files\dotnet\sdk\8.0.204\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(284,5): 警告NETSDK1206:发现特定版本或特定分发版的运行时标识符:win7-x64。受影响的库:Microsoft.Azure.DocumentDB.Core。在.NET 8.0及更高版本中,默认情况下将找不到特定版本和特定分发版运行时标识符的资产。 Shared -> C:\Users\folder\Desktop\DEV\Azure Static Web Apps\folder\Shared\bin\Debug\net8.0\Shared.dll C:\Program Files\dotnet\sdk\8.0.204\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(284,5): 警告NETSDK1206:发现特定版本或特定分发版的运行时标识符:win7-x64。受影响的库:Microsoft.Azure.DocumentDB.Core。在.NET 8.0及更高版本中,默认情况下将找不到特定版本和特定分发版运行时标识符的资产。 Api -> C:\Users\ianco\Desktop\DEV\Azure Static Web Apps\TedcoBlazorApp2024_02\Api\bin\Debug\net8.0\Api.dll 正在确定要还原的项目... C:\Program Files\dotnet\sdk\8.0.204\NuGet.targets(169,5): 错误:无法加载源https://api.nuget.org/v3/index.json的服务索引。[C:\Users\folder\AppData\Local\Temp\3n3pdx2i.gqf\WorkerExtensions.csproj] C:\Program Files\dotnet\sdk\8.0.204\NuGet.targets(169,5): 错误: 找不到该主机。(api.nuget.org:443) [C:\Users\folder\AppData\Local\Temp\3n3pdx2i.gqf\WorkerExtensions.csproj] C:\Program Files\dotnet\sdk\8.0.204\NuGet.targets(169,5): 错误: 找不到该主机。[C:\Users\folder\AppData\Local\Temp\3n3pdx2i.gqf\WorkerExtensions.csproj]
问题分析
- 核心错误:离线调试时系统尝试访问远程NuGet源还原依赖包,导致网络连接失败
- 附带警告:使用了.NET 8不再推荐的特定版本运行时标识符(win7-x64)
解决方案
步骤1:提前完成NuGet包离线缓存
在线状态下,执行以下命令完成所有项目的依赖包还原,确保包已下载到本地缓存:
dotnet restore --packages C:\Your\Custom\Package\Cache
或者直接在VSCode中打开项目,等待在线状态下自动完成还原,默认缓存路径为C:\Users\<你的用户名>\.nuget\packages。
步骤2:配置离线NuGet源
在项目根目录新建或编辑NuGet.Config文件,仅保留本地缓存作为包源:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="LocalNuGetCache" value="C:\Users\<你的用户名>\.nuget\packages" /> <!-- 若使用自定义缓存路径,替换上述value值 --> </packageSources> </configuration>
步骤3:修正运行时标识符(解决NETSDK1206警告)
打开Shared.csproj和Api.csproj文件,将原有的特定版本RID替换为通用版本:
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
若无需特定运行时,可直接移除该节点,使用框架无关的构建模式。
步骤4:配置VSCode调试任务避免自动还原
编辑.vscode/tasks.json中的构建任务,添加--no-restore参数,阻止调试时触发包还原:
{ "version": "2.0.0", "tasks": [ { "label": "build", "command": "dotnet", "type": "process", "args": [ "build", "${workspaceFolder}/Api/Api.csproj", "--no-restore", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" } ] }
同时确保.vscode/launch.json中的调试配置依赖上述build任务,避免额外触发还原操作。
内容的提问来源于stack exchange,提问作者DataWrangler1980
相关产品推荐
相关产品推荐

