ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

aspnetcore 仓库运行 restore.cmd 报 MSB4236 无法找到 .NET Core SDK 怎么排查?

aspnetcore 仓库运行 restore.cmd 报 MSB4236 无法找到 .NET Core SDK 怎么排查? aspnetcore 仓库运行 restore.cmd 报 MSB4236 无法找到 .NET Core SDK 怎么排查【免费下载链接】aspnetcoreASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.项目地址: https://gitcode.com/GitHub_Trending/as/aspnetcore在 aspnetcore 仓库中执行.\restore.cmd或.\build.cmd时可能遇到下面这两行错误error : Unable to locate the .NET Core SDK. Check that it is installed and that the version specified in global.json (if any) matches the installed version. error MSB4236: The SDK Microsoft.NET.Sdk specified could not be found.这表示当前命令行环境找不到仓库要求的 .NET SDK。该仓库构建使用的是预览版 .NET SDK由restore脚本自动安装到仓库根目录的.dotnet文件夹中而不是依赖你机器上已有的 SDK。错误信息本身也给出了排查方向确认 SDK 已安装并且与global.json中指定的版本一致。下面按仓库文档给出的路径逐步排查。报错时的背景仓库如何定位 SDK仓库根目录的 global.json 固定了 SDK 版本和查找路径sdk.version11.0.100-rc.1.26420.103预览版11.0.100-rc.1系列sdk.paths[.dotnet, $host$]即优先在仓库根目录下的.dotnet文件夹里找 SDKsdk.errorMessageThe .NET SDK could not be found, run ./restore.cmd or ./restore.sh first.也就是说SDK 应由restore脚本装到本地.dotnet目录。只要这个目录里没有对应版本的 SDKrestore.cmd/build.cmd就会报 MSB4236。BuildFromSource 文档也说明了这一前提仓库使用预览版 .NET SDK 构建项目由restore脚本自动安装。排查步骤1. 确认本地.dotnet是否已由 restore 脚本安装在仓库根目录重新执行一次完整的 restore# Windows .\restore.cmd# Linux 或 Mac ./restore.shrestore 完成后检查仓库根目录下是否存在.dotnet\dotnet.exeLinux/Mac 为.dotnet/dotnet。一个现成的判断方式是用 dot-source 方式激活本地环境注意. ./activate.ps1前面是“点、空格”不能直接运行该脚本# Windows . ./activate.ps1# Linux 或 Mac source activate.shactivate.ps1 会在激活后输出以下两种结果之一.dotnet\dotnet.exe不存在时输出.NET Core has not been installed yet. Run 仓库根目录\restore.cmd to install it.—— 说明 restore 尚未成功装好 SDK继续排查 restore 本身的报错存在时输出dotnet 仓库根目录\.dotnet\dotnet.exe并提示Enabled the .NET Core environment. Execute deactivate to exit.。看到后者说明本地 SDK 已就位此时重新运行.\restore.cmd或.\build.cmd验证是否不再报 MSB4236。2. 在 Visual Studio 中启用 .NET Core SDK 预览版本BuildErrors 文档指出MSB4236 在大多数情况下是因为 Visual Studio 2019 中Use previews of the .NET Core SDK选项未勾选。处理方法是启动 Visual Studio进入Tools Options在Environment Preview Features下勾选Use previews of the .NET Core SDK。原因可以结合global.json理解仓库锁定的是11.0.100-rc.1预览版 SDK如果 Visual Studio 不允许使用预览版 SDK就会解析不到Microsoft.NET.Sdk产生同样的报错。3. 仓库是较早克隆的清理残留的 .dotnet 和 .toolsBuildErrors 文档还针对旧克隆给出了一条路径如果你是在较早前克隆的仓库运行restore.cmd出现构建错误时尝试删除仓库根目录下的.dotnet和.tools两个目录可能是旧版 .NET SDK 与当前版本不兼容。注意副作用这两个目录是 restore 生成的本地工具链和 SDK删除后需要重新完整运行一次.\restore.cmd才会重新安装属于“删本地文件 重新下载工具链”的操作仓库源码不受影响。另外文档建议在不同 commit 之间切换 checkout 时执行git clean -xddff避免旧构建资产与新提交冲突。该命令会删除仓库中的未跟踪文件包括本地产物如提示文件被锁失败文档给出的办法是先停掉正在运行的dotnet或.NET Host进程再重试。验证是否解决按文档描述的成功标准核对重新执行.\restore.cmdWindows或./restore.shLinux/Mac不再出现error MSB4236和Unable to locate the .NET Core SDK. ./activate.ps1后输出dotnet 仓库根目录\.dotnet\dotnet.exe说明命令行已指向仓库本地安装的 SDK。满足以上两点后即可按 BuildFromSource 的常规流程继续构建在需要构建的项目子目录运行.\build.cmd需要测试时加-test参数。适用边界该排查针对 Windows 下.\restore.cmd/.\build.cmd报 MSB4236 的场景Linux/Mac 对应./restore.sh流程相同。仓库构建依赖预览版 SDK这是仓库的固有要求见global.json与 BuildFromSource不要试图把global.json改成稳定版 SDK 来“绕过”报错。如果 restore 本身在下载工具链阶段就失败例如网络不通MSB4236 会伴随 restore 的下载报错出现此时应先解决 restore 的原始报错而不是按 SDK 未安装处理。【免费下载链接】aspnetcoreASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.项目地址: https://gitcode.com/GitHub_Trending/as/aspnetcore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表