我有一个 Visual Studio 项目(.NET Core 8、Azure Functions v4),它“可以在除我的机器之外的任何机器上运行”。
错误信息是:
“---”函数出错:无法加载文件或程序集“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 Function 项目工作正常,但这个项目“卡住”了。
Visual Studio 2022 - 社区或专业版中存在相同问题。
我在这里阅读了数十个类似的问题并尝试过:
DependencyWalker
显示无数“打开文件时出错”。消息以及:
错误:未找到至少一个所需的隐式或转发依赖项。
错误:发现具有不同 CPU 类型的模块。
警告:至少未找到一个延迟加载依赖模块。
警告:由于延迟加载相关模块中缺少导出功能,至少有一个模块存在未解析的导入。
更新:
<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>
8.0.204 [C:\Program Files\dotnet\sdk]
仅供参考:我后来安装了 .NET v6,看看它是否有帮助(因为 CoreToolsHost 正在记录“加载 .NET 6 主机”),但这没有帮助。
通过将以下行添加到
local.settings.json
来解决:
"FUNCTIONS_INPROC_NET8_ENABLED": "1",