Не удается загрузить Newtonsoft.Json в локальном приложении Azure Functions - PullRequest
0 голосов
/ 05 июня 2018

Я разрабатываю «приложение» для функций Azure и выполняю большую часть тестирования локально, а затем публикую библиотеки DLL в Azure.Я начал в марте, и он работал довольно хорошо вплоть до пары недель назад.

В основном я занимаюсь разработкой и тестированием с использованием macOS High Sierra (в настоящее время последняя версия; 10.13.4) и Visual Studio настабильный канал.

Недавно я обновил Visual Studio, когда он мне это подсказал, и, похоже, он был обновлен до версии .NETStandard 2.0 над .NET Framework 4.7. *, но мой проект остался на .NET Framework 4.7.Тем не менее, когда я пытался запустить триггеры таймера через POST-запрос к конечной точке администратора, я получаю сообщение об ошибке, сообщающее, что приложение не может загрузить Newtonsoft.Json.

Я некоторое время боролся с этим и закончил тем, что создал новый проект с .NETStandard 2.0 и просто скопировал файлы, но та же ошибка сохранилась.

Newtonsoft.Json устанавливается из встроенного менеджера пакетов NuGet в Visual Studio для Mac.

Я также тестировал тот же проект в Windows (Windows Server 2012 R2 Standard), но у меня точно такая же ошибка.

Ошибка, которую я получаю:

[06/05/2018 08:17:18] System.Private.CoreLib: Exception while executing function: Posts. MyAzureFunctionsApp: Could not load file or assembly 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. Could not find or load a specific file. (Exception from HRESULT: 0x80131621). System.Private.CoreLib: Could not load file or assembly 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.
[06/05/2018 08:17:18] 
[06/05/2018 08:17:18] Executed 'Posts' (Failed, Id=7c288cdf-7807-4450-92cd-c64370e241a5)
[06/05/2018 08:17:18] System.Private.CoreLib: Exception while executing function: Posts. MyAzureFunctionsApp: Could not load file or assembly 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. Could not find or load a specific file. (Exception from HRESULT: 0x80131621). System.Private.CoreLib: Could not load file or assembly 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.

Newtonsoft.Json версии 11.0.0 не существует, она в настоящее время находится в версии 11.0.2, а DLL сообщает о версии 11.0.2.21924, поэтомуЯ попробовал "перенаправление привязки".Кажется, это тоже не имеет значения.

app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json"
                publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
      <bindingRedirect oldVersion="11.0.0.0" newVersion="11.0.2.21924"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

CSProj-файл:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.13" />
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.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>

Я очищал проект десятки раз, создал новый проект, удалил ~/.nuget, переустановил Visual Studio и протестировал тот же проект на Windows.Но я все равно получаю ту же ошибку каждый раз.

1 Ответ

0 голосов
/ 05 июня 2018

Переадресация привязки пока не поддерживается ( проблема GitHub ).

В Microsoft.NET.Sdk.Functions 1.0.13 в качестве зависимости для таргетинга на netstandard2 используется Newtonsoft.Json 10.0.3..0 ( пакет NuGet ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...