Проблема с версией функций Azure v1 (с использованием .Net461 / .Net472) с NotificationHub v3.1.0 - PullRequest
0 голосов
/ 26 июня 2019

Я хотел бы запустить функцию Azure v1 с .Net461 / .Net472 для тестирования пакета NotificationHub.Однако при выполнении приведенного ниже кода есть исключение:

await _hub.CreateOrUpdateRegistrationAsync(registration);

Ошибка:

Исключение при выполнении функции: PushRegister.Microsoft.Azure.NotificationHubs: не удалось загрузить файл или сборку 'Newtonsoft.Json, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = XXX' или одна из ее зависимостей.Системе не удается найти указанный файл.

Я попытался перейти на 10.0.3, затем произошла ошибка типа

Microsoft.Azure.NotificationHubs: Не удалось загрузить файл или сборку'Newtonsoft.Json, версия = 12.0.0.0 ...

Ниже приведен файл XXX.csproj для справки:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
    <AzureFunctionsVersion>v1</AzureFunctionsVersion>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.3" />
    <PackageReference Include="Microsoft.Azure.NotificationHubs" Version="3.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.ServiceBus" Version="2.3.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\YYY\YYY.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Configuration" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

1 Ответ

1 голос
/ 26 июня 2019

Большинство библиотек Nuget имеют зависимость от пакета Newtonsoft, даже Microsoft.NET.Sdk.Functions зависит от него, но это более старая версия.

Вы не можете использовать любые другие пакеты Nuget, которые зависят от версии Newtonsoft.Json, которая выше версии, зависящей от времени выполнения функции.

Когда вы пытаетесь установить NuGet, который зависит от более ранней версии пакета Newtsonsoft, вы просто не можете установить его. Единственное решение - использовать более старую версию той библиотеки, которая вам нужна.

enter image description here

Я также написал блог об этом, и на github это уже открытый вопрос

https://medium.com/@hharan618/common-issues-while-development-of-azure-functions-76b08299af58

...