Обновите мою функцию Azure с .net Core 3.1 до .net Core 7.0. Ошибка «Не удалось загрузить файл или сборку Microsoft.Extensions.Configuration.Abstraction

У меня есть функция Azure, которая работает на .net core 3.1, но когда я меняю версию .net с 3.1 на 7, я получаю эту ошибку:-

      System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.'

вот снимок экрана:-

вот мой файл csproj:-

      <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.15.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
    <PackageReference Include="PnP.Core.Auth" Version="1.8.0" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

Любые советы по этому поводу, пожалуйста?

я установилInstall-Package Microsoft.Extensions.Configuration.Abstractions -Version 7.0.0но и это не решило проблему.

1 ответ

  1. .NET 3.1 находится в процессе, а .NET 7 — тип изолированного рабочего процесса.
  2. Я вижу ваш код файла .csproj , указанный в вопросе, что вы изменили только .NET Framework и версию функций Azure, которая не является полным кодом конфигурации для функции Azure изолированного процесса .NET 7, а также вам не хватает нескольких ссылок на пакеты Function Worker вкод файла.
  3. Проект изолированных функций Azure Basic/Default .NET 7 содержит приведенный ниже код в .csprojфайл:
      <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <OutputType>Exe</OutputType>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.8.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.7.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Http" Version="3.2.0" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext" />
  </ItemGroup>
</Project>

введите описание изображения здесь

  1. .NET 7 In-Process еще не выпущен, и для преобразования .NET 3.1 (внутрипроцессная модель) в .NET 7 (изолированный рабочий процесс) вам необходимо написать .NET 7 изолированные совместимые пакеты NuGet, изменения кода в Код функции,program.csфайл и т. д.,

См. этот документ MS , чтобы узнать об этапах миграции и проверках функций Azure с версии 3 на версию 4, а также в одном из моих ответов SO № 74428448 указано обновление поддерживаемой доступной версии в функциях Azure C#.

Другие вопросы по тегам