Azure Function V3 无法加载文件或程序集“Microsoft.Extensions.DependencyModel,版本=3.1.6.0”

use*_*711 3 c# dependency-injection azure-functions

我们尝试使用 DependencyContext.Default.RuntimeLibraries 来获取所有项目程序集并将我们想要的类型加载到 ServiceCollection 中。此代码在 asp.net core Web 应用程序上运行良好,但在本地启动我们的 Azure Function 项目之一时,我们收到以下错误:

System.IO.FileNotFoundException:“无法加载文件或程序集“Microsoft.Extensions.DependencyModel,Version=3.1.6.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。该系统找不到指定的文件。'

我们的功能配置如下:

<Project Sdk="Microsoft.NET.Sdk">   
<PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <AzureFunctionsVersion>v3</AzureFunctionsVersion>
        <UserSecretsId>...</UserSecretsId>   </PropertyGroup>   
<ItemGroup>
        <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
        <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.5.1" />
        <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="4.3.0" />
        <PackageReference Include="Microsoft.Azure.WebJobs.Host.Storage" Version="4.0.1" />
        <PackageReference Include="Microsoft.Azure.WebJobs.Logging.ApplicationInsights" Version="3.0.27" />
        <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.18" />
        <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13" />
        <PackageReference Include="System.Text.Json" Version="4.7.2" />   
</ItemGroup>
<ItemGroup>
        <None Update="host.json">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
        <None Update="local.settings.json">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
          <CopyToPublishDirectory>Never</CopyToPublishDirectory>
        </None>   
</ItemGroup>   
<ItemGroup>   
</ItemGroup> 
</Project>
Run Code Online (Sandbox Code Playgroud)

该包是通过解决方案中的另一个项目引用的,我们也尝试直接引用,但没有成功。

在此输入图像描述

有谁知道这个问题的解决方法/修复方法?

小智 5

在函数的 .csproj 文件中添加函数保留的依赖项

<ItemGroup>
    <FunctionsPreservedDependencies Include="Microsoft.Extensions.DependencyModel.dll" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)