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