VS Code中Azure Functions本地测试报错:缺少.NET Core 3.1运行时
Azure Functions本地测试.NET版本不兼容问题解决指南
问题描述
我是Azure Functions新手,在VS Code中创建Hello World版Azure Function,本地测试时出现以下错误:
/Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : You must install or update .NET to run this application. [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : App: /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/tools/netcoreapp3.1/Microsoft.NET.Sdk.Functions.Generator.dll [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Architecture: arm64 [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Framework: 'Microsoft.NETCore.App', version '3.1.0' (arm64) [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : .NET location: /usr/local/share/dotnet/ [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : The following frameworks were found: [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : 6.0.12 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Learn about framework resolution: [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : https://aka.ms/dotnet/app-launch-failed [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : To install missing framework, download: [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.0&arch=arm64&rid=osx.13-arm64 [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj] /Users/<username>/.nuget/packages/microsoft.net.sdk.functions/3.0.10/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Metadata generation failed. [/Users/<username>/Library/CloudStorage/OneDrive-<companyName>/ConsentizerSandbox/sand-generateUserGuid/sand-generateUserGuid.csproj]
已尝试重置工作区、检查NuGet包、执行dotnet restore、重新安装.NET及调整dotnet运行时/SDK等方法,均未解决问题。项目构建正常,但构建后Azure扩展接管时返回上述错误。
我的Function代码如下:
using System; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Consentizer.guid { public static class helloWorlFc { [FunctionName("helloWorld")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name; string responseMessage = string.IsNullOrEmpty(name) ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." : $"Hello, {name}. This HTTP triggered function executed successfully."; return new OkObjectResult(responseMessage); } } }
核心问题分析
错误明确指出Microsoft.NET.Sdk.Functions 3.0.10版本依赖.NET Core 3.1运行时,但本地仅安装了.NET 6.0.12,导致元数据生成失败。
具体解决步骤
方案1:升级Microsoft.NET.Sdk.Functions包到兼容.NET 6的版本
- 打开项目的
.csproj文件,找到<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.10" /> - 将版本号修改为4.x.x(例如4.2.0,该版本完全兼容.NET 6)
- 保存文件后执行
dotnet restore重新安装依赖包
方案2:安装缺失的.NET Core 3.1运行时
- 安装对应ARM64架构的.NET Core 3.1运行时,匹配错误提示的系统架构要求
- 安装完成后重启VS Code,重新启动本地函数测试
方案3:切换项目目标框架到.NET 6
- 打开
.csproj文件,将<TargetFramework>netcoreapp3.1</TargetFramework>修改为<TargetFramework>net6.0</TargetFramework> - 同步升级
Microsoft.NET.Sdk.Functions包版本到4.x,避免版本不匹配
本地测试与部署验证
- 修改完成后,在VS Code中按F5启动本地函数,验证是否正常响应HTTP请求
- 测试通过后,直接使用VS Code Azure扩展部署到Azure,部署前确认Azure函数应用的运行时设置为.NET 6(或对应安装的版本)
内容的提问来源于stack exchange,提问作者CZBios
相关产品推荐
相关产品推荐

