. Net Основные версии 2.2 до 3.1 Azure. Функции переноса проекта при сбое сборки - PullRequest
2 голосов
/ 21 января 2020

У меня есть решение функций *. 1041 * Core 2.2 Azure, на которое я пытаюсь перейти. Net Core 3.1. Я сделал следующие шаги:

  1. Я изменил целевую среду файлов проекта на netcoreapp3.1
  2. Я обновил пакеты Nuget до последней стабильной версии
  3. Я обновил глобальный. json до
{
    "sdk": {
        "version": "3.1.100"
    }
}
У меня нет PackageReference для «Microsoft.AspNetCore.App» в файлах проекта Я установил SDK из https://dotnet.microsoft.com/download/dotnet-core/3.1 Я запустил pm install -g azure-functions-core-tools@3

Все прошло нормально, но во время выполнения у меня возникла проблема с сериализацией:

Newtonsoft. Json: Обнаружена самореференция l oop с типом "Платформа" , Путь '[0] .hierarchy.platform'. "

У меня есть 2 DTO:

public class Platform
{
    [JsonRequired]
    public string PlatformId { get; set; }

    [JsonRequired]
    public Guid HierarchyUuid { get; set; }

    public Hierarchy Hierarchy { get; set; }
}

public class Hierarchy
{
    [JsonRequired]
    public string HierarchyId { get; set; }

    [JsonIgnore]
    public IEnumerable<Platform> Platform { get; set; }
}

Я понимаю причину проблемы, но с. Net Core 2.2 в качестве целевой платформы эти DTO были успешно сериализованы. Как упоминалось Microsoft, в версии 3.1 изменена сериализация, и я думаю, что это является причиной проблемы. Я заменил Newtonsoft. Json на System.Text. Json но все еще имел ту же проблему. Наконец, чтобы предотвратить циклические ссылки между Платформой и Иерархией, я сохранил Newtonsoft. Json и добавил в метод FunctionStartup.Configure следующее:

builder.Services.AddMvcCore().AddNewtonsoftJson(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);

Для чего нужна Microsoft. AspNetCore. Mvc .Newtonsoft Json пакет.

Когда я установил версию пакета 3.1.1, я получил ошибку сборки

Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Microsoft.AspNetCore.Mvc.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

Кто-нибудь есть идея, почему у меня это ошибка и как решить проблему?

...