.NET Core 8 Azure Functions v4本地无法加载程序集求助
我有一个基于.NET Core 8、Azure Functions v4的Visual Studio项目,该项目在其他机器上均可正常运行,但在我的机器上无法启动,核心错误为程序集找不到:
'---' 函数出错: 无法加载文件或程序集 'X.X.X, Version=8.0.0.0, Culture=neutral, PublicKeyToken=...'。系统找不到指定的文件。
无论代码中引用System.Net.Http还是System.Security.Cryptography.X509Certificates,都会触发类似的程序集找不到错误,根据代码注释/移除的部分不同,错误信息略有差异:
配置外部启动类中的服务时出错。
XXX.Consumer: 无法加载文件或程序集 'System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。系统找不到指定的文件。
启动操作 '106f06bc-2885-4839-abfe-c23ed98b7b26' 期间发生主机错误。
Microsoft.Azure.WebJobs.Script: 配置外部启动类中的服务时出错。XXX.Consumer: 无法加载文件或程序集 'System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。系统找不到指定的文件。
其他Azure Functions项目在我的机器上均可正常运行,但该项目始终无法解决问题,且在Visual Studio 2022社区版和专业版中均存在相同问题。
已尝试的解决方法
- 清理并重建解决方案/项目
- 重启Visual Studio
- 切换Release和Debug模式运行
- 删除整个Debug/Release目录
- 更新所有NuGet包
- 使用DependencyWalker打开
bin/Debug/net8.0/Project.dll,结果显示:错误: 至少有一个必需的隐式或转发依赖项未找到。
错误: 发现具有不同CPU类型的模块。
警告: 至少有一个延迟加载依赖项模块未找到。
警告: 至少有一个模块因延迟加载依赖项模块中缺少导出函数而存在未解析的导入。
更新信息
C#项目文件
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <AzureFunctionsVersion>v4</AzureFunctionsVersion> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> <ItemGroup> <PackageReference Include="AutoMapper" Version="13.0.1" /> <PackageReference Include="Azure.Data.SchemaRegistry" Version="1.4.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="6.3.5" /> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" /> <PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Options.DataAnnotations" Version="8.0.0" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.4.1" /> <PackageReference Include="Newtonsoft.Json.Schema" Version="4.0.1" /> </ItemGroup> <ItemGroup> <None Update="host.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Update="local.settings.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToPublishDirectory>Never</CopyToPublishDirectory> </None> </ItemGroup> </Project>
本地.NET SDK版本
8.0.204 [C:\Program Files\dotnet\sdk]
补充说明:后续我安装了.NET v6(因CoreToolsHost日志显示"Loading .NET 6 host"),但问题仍未解决。
内容的提问来源于stack exchange,提问作者Marc

