You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移.NET Framework4.8 Azure Functions至v4遇程序集解析错误

问题描述

基于.NET Framework 4.8的Azure Function(原v1版本)迁移至v4版本时,使用Microsoft.NET.Sdk.Functions 4.0编译正常,但升级到4.0.1及以上版本时出现大量构建错误:

  • 无法确定eBay.Service.dll中的System.Web.Services.Protocols.SoapHeaderAttribute是否派生自Microsoft.Azure.WebJobs.Hosting.WebJobsStartupAttribute,原因是找不到System.Web.Services, Version=4.0.0.0程序集
  • EntityFramework.dll和AWSSDK.Core.dll中出现类似错误,涉及System.Configuration.ConfigurationPropertyAttribute,提示无法解析System.Configuration.ConfigurationManager程序集
  • 这些依赖均为非开源DLL,其中EntityFramework的问题尤为异常
  • 构建过程会导致Visual Studio卡死,只能通过任务管理器终止进程,无法取消构建
解决方案

1. 显式添加缺失的程序集引用

在项目文件(.csproj)中手动添加对缺失系统程序集的引用,强制构建时解析这些依赖:

<ItemGroup>
  <Reference Include="System.Web.Services">
    <HintPath>$(FrameworkDir)\System.Web.Services.dll</HintPath>
    <Private>False</Private>
  </Reference>
  <Reference Include="System.Configuration">
    <HintPath>$(FrameworkDir)\System.Configuration.dll</HintPath>
    <Private>False</Private>
  </Reference>
</ItemGroup>

注:$(FrameworkDir)会自动指向.NET Framework 4.8的安装目录,确保路径正确。

2. 调整Functions SDK的构建行为

在项目文件中添加以下配置,禁用不必要的程序集扫描逻辑,避免SDK误判属性派生关系:

<PropertyGroup>
  <DisableFunctionAssemblyScanning>true</DisableFunctionAssemblyScanning>
</PropertyGroup>

该配置会阻止Functions SDK扫描所有依赖程序集的WebJobsStartupAttribute派生类,避免因缺失系统程序集导致的错误判断。

3. 清理并重建项目

  • 删除项目的bin和obj目录
  • 清除Visual Studio的NuGet缓存:打开「工具」→「NuGet包管理器」→「包管理器设置」→「清除所有NuGet缓存」
  • 重启Visual Studio后重新构建项目

4. 降级EntityFramework版本(临时方案)

如果EntityFramework的问题持续,尝试将其降级至与.NET Framework 4.8兼容的稳定版本(如6.4.4),避免因版本不匹配导致的配置解析错误。

内容的提问来源于stack exchange,提问作者DanScan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:22:07