VS2022运行.NET6 Azure Functions时FUNCTIONS_INPROC_NET8_ENABLED报错解决
解决Azure Functions本地运行的SDK版本与Core Tools不兼容问题
问题描述
在Visual Studio Professional 2022中本地运行C#编写的Azure Functions应用时,遇到如下错误:
FUNCTIONS_INPROC_NET8_ENABLED应用设置未在local.settings.json中启用
已选择inproc6主机。
此版本的Azure Functions Core Tools要求项目引用Microsoft.NET.Sdk.Functions 4.5.0或更高版本,请更新至最新版本。
项目文件配置如下:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <AzureFunctionsVersion>v4</AzureFunctionsVersion> </PropertyGroup> <ItemGroup> <None Remove="appSettings.Production.json" /> </ItemGroup> <ItemGroup> <Content Include="local.settings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <ExcludeFromSingleFile>true</ExcludeFromSingleFile> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content> <Content Include="appsettings.Development.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <ExcludeFromSingleFile>true</ExcludeFromSingleFile> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content> <Content Include="appsettings.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> <ExcludeFromSingleFile>true</ExcludeFromSingleFile> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.Azure.DurableTask.Core" Version="2.17.1" /> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="5.0.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.13.4" /> <PackageReference Include="Microsoft.Azure.WebJobs.Logging.ApplicationInsights" Version="3.0.35" /> <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> <PackageReference Include="Microsoft.Extensions.Options" Version="7.0.1" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.3" /> <PackageReference Include="SendGrid.Extensions.DependencyInjection" Version="1.0.1" /> <PackageReference Include="Serilog.AspNetCore" Version="5.0.0" /> <PackageReference Include="Serilog.Enrichers.Process" Version="2.0.2" /> <PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" /> <PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" /> <PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" /> <PackageReference Include="Serilog.Sinks.ApplicationInsights" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.MSSqlServer" Version="5.7.0" /> <PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.0" /> <PackageReference Include="System.Data.SqlClient" Version="4.8.6" /> <PackageReference Include="System.Text.Encodings.Web" Version="7.0.0" /> <PackageReference Include="System.Text.Json" Version="7.0.2" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\RailAPI.Data\RailAPI.Data.csproj" /> <ProjectReference Include="..\RailAPI.Services\RailAPI.Services.csproj" /> <ProjectReference Include="..\RailAPI.Workers\RailAPI.Workers.csproj" /> </ItemGroup> <ItemGroup> <None Update="host.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> <ItemGroup> <FunctionsPreservedDependencies Include="Microsoft.Extensions.Caching.Abstractions.dll" /> <FunctionsPreservedDependencies Include="Microsoft.Extensions.DependencyModel.dll" /> <FunctionsPreservedDependencies Include="Microsoft.Extensions.DependencyInjection.dll" /> <FunctionsPreservedDependencies Include="System.Text.Json.dll" /> </ItemGroup> <ItemGroup> <Page Include="appsettings.Production.json" /> <Page Include="local.settings.json" /> </ItemGroup> <Target Name="FunctionsPostBuildDepsCopy" AfterTargets="PostBuildEvent"> <Copy SourceFiles="$(OutDir)$(AssemblyName).deps.json" DestinationFiles="$(OutDir)bin\$(AssemblyName).deps.json" /> </Target> <Target Name="FunctionsPublishDepsCopy" AfterTargets="Publish"> <Copy SourceFiles="$(OutDir)$(AssemblyName).deps.json" DestinationFiles="$(PublishDir)bin\$(AssemblyName).deps.json" /> </Target> <ItemGroup> <None Update="local.settings.json"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </None> </ItemGroup> </Project>
local.settings.json配置如下:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet" } }
尝试升级Microsoft.NET.Sdk.Functions NuGet包后,运行应用出现新错误。
解决方案
1. 同步升级核心依赖包
初始错误源于Microsoft.NET.Sdk.Functions版本(4.1.3)低于Core Tools要求的4.5.0,升级后出现新错误多为依赖版本不兼容导致,需同步升级相关Azure Functions依赖:
- 将
Microsoft.NET.Sdk.Functions升级到4.5.0或更高稳定版本(建议直接使用最新稳定版) - 同步升级以下关联包:
Microsoft.Azure.WebJobs.Extensions.DurableTask:升级到与SDK匹配的版本(如SDK 4.5.0+对应2.18.0+)Microsoft.Azure.WebJobs.Extensions:升级到5.1.0+Microsoft.Azure.WebJobs.Logging.ApplicationInsights:升级到3.0.38+Microsoft.Azure.DurableTask.Core:版本需与Microsoft.Azure.WebJobs.Extensions.DurableTask保持一致
2. 修正local.settings.json配置
由于项目目标框架为net6.0,无需启用FUNCTIONS_INPROC_NET8_ENABLED,但需明确指定运行时版本:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "FUNCTIONS_WORKER_RUNTIME_VERSION": "~6" } }
3. 清理项目缓存并重建
- 删除项目根目录下的
bin和obj文件夹,清除本地构建缓存 - 在Visual Studio中执行清理解决方案 → 重建解决方案
- 重启Visual Studio,避免缓存残留影响运行
4. 优化项目文件配置
项目文件中存在重复的local.settings.json配置,保留一处正确的即可,建议保留:
<Content Include="local.settings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <ExcludeFromSingleFile>true</ExcludeFromSingleFile> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content>
同时移除不必要的FunctionsPreservedDependencies配置,升级SDK后部分依赖会自动处理,手动指定可能引发冲突。
5. 排查升级后的新错误
若仍有错误,按以下步骤定位:
- 查看错误详情,明确是依赖冲突、缺失还是代码兼容性问题
- 检查所有NuGet包版本与net6.0、Azure Functions v4的兼容性
- 确认引用的项目(RailAPI.Data、RailAPI.Services等)也同步升级了对应依赖版本
内容的提问来源于stack exchange,提问作者Dilshan Prasad
相关产品推荐
相关产品推荐

