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