WedX - журнал о программировании и компьютерных науках

Newtonsoft.Json не загружается в локальное приложение "Функции Azure"

Я разрабатываю «приложение» функций 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. Но я все еще получаю ту же ошибку каждый раз.


  • Вы имеете в виду Visual Studio для Mac? А как вы использовали проект .NET 4.7.x на MacOS? (Только ядро ​​и Mono являются кросс-платформенными.) 05.06.2018

Ответы:


1

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

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

05.06.2018
  • Благодарю вас! Понижение версии Newtonsoft.Json до 10.0.3 решило эту проблему! Не могу поверить, что я потратил на это столько часов. 05.06.2018
  • С удовольствием (голый hyggelig), это было сделано :) 05.06.2018
  • Потрясающий. То же самое случилось со мной. Еще одна вещь, Microsoft.NET.Sdk.Functions 1.0.14 не работает только с понижением версии Newtonsoft.Json до 10.0.3. Мне пришлось перейти с Microsoft.NET.Sdk.Functions 1.0.14 на Microsoft.NET.Sdk.Functions 1.0.13, после чего это сработало. 29.07.2018
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]