关于.NET Framework 4.8 Azure Functions项目构建报错要求.NET Core 4.8运行时的问题咨询
这问题我之前帮好几个开发者排查过,其实错误提示里的表述有点误导——毕竟根本不存在什么".NET Core 4.8" runtime,问题核心是你的项目配置、工具链或者依赖和.NET Framework 4.8的Azure Functions环境不兼容,下面拆解具体原因和解决办法:
可能的原因
项目目标框架配置错误
大概率是你的.csproj文件里的目标框架被误写了。比如有人会不小心把net48(对应.NET Framework 4.8)写成netcore4.8,而这个框架版本根本不存在,导致构建工具误判,抛出了混淆的错误提示。Azure Functions Runtime版本不匹配
Azure Functions v4及以上版本已经不再支持.NET Framework,只支持.NET Core/.NET 5+。如果你的项目是基于.NET Framework 4.8的,但本地用了v4的Functions Core Tools或者配置了v4的runtime,就会触发这类错误。NuGet依赖包选错了
如果你引用了Microsoft.Azure.Functions.Worker这类专为隔离进程模型(只支持.NET Core)设计的包,而不是.NET Framework 4.8项目应该用的Microsoft.NET.Sdk.Functions,也会导致构建时出现不兼容提示。
解决步骤
修正项目目标框架
打开你的项目.csproj文件,找到<TargetFramework>节点,确保它的值是net48,比如:<TargetFramework>net48</TargetFramework>如果是
netcore4.8或者其他错误值,直接改成net48即可。匹配正确的Azure Functions Runtime
- 打开项目根目录的
local.settings.json文件,设置FUNCTIONS_EXTENSION_VERSION为~3(这是支持.NET Framework 4.8的最新稳定runtime版本):"FUNCTIONS_EXTENSION_VERSION": "~3" - 卸载当前的Functions Core Tools,安装v3.x版本的工具链(可以通过npm或者微软官网下载对应版本)。
- 打开项目根目录的
修复NuGet依赖
- 在.csproj文件中,移除所有
Microsoft.Azure.Functions.Worker、Microsoft.Azure.Functions.Worker.Sdk这类隔离进程相关的包引用。 - 添加或保留
Microsoft.NET.Sdk.Functions包,版本选择3.x系列的稳定版:<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.1.1" /> - 执行
dotnet restore命令或者在NuGet包管理器中还原所有依赖。
- 在.csproj文件中,移除所有
清理并重新构建
- 在Visual Studio中右键项目,选择「清理」,然后删除项目根目录下的
bin和obj文件夹。 - 重新执行构建操作,应该就能正常完成了。
- 在Visual Studio中右键项目,选择「清理」,然后删除项目根目录下的
本质上这个错误是因为项目配置、runtime版本或者依赖包和.NET Framework 4.8的Azure Functions环境不兼容,把这些点逐一排查修正就能解决。
内容的提问来源于stack exchange,提问作者Jari S

