Не удалось загрузить файл или сборку, система не может найти указанный файл

Я создаю функцию Azure, которая будет выступать в качестве серверной части для навыка Alexa.

Все, что я сделал до сих пор в Visual Studio:

  1. Файл -> Новый проект функций Azure
  2. Добавить новую функцию Azure
  3. Добавьте AlexaSkillsKit.NET с помощью NuGet.
  4. Создайте оболочку реализации Speechlet
  5. Добавьте минимальный код в функцию Azure для обработки речи.

При компиляции получаю ошибку:

Не удалось загрузить файл или сборку «Newtonsoft.Json, версия = 7.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed» или одну из ее зависимостей. Система не может найти указанный файл.

Но, согласно NuGet в Visual Studio, он не пытается использовать 7.0.0.0, он использует 9+. Я пытался обновить и понизить версию пакета JSON.net. Я пробовал очистить/перестроить/перезапустить с нуля.

Я подумал, что, возможно, ответом может быть привязка сборки, но в проекте функций Azure нет ни Web.config, ни App.config.

Что мне не хватает? Как избавиться от этой ошибки?

Код речи:

public class MySpeechlet : SpeechletBase, ISpeechletWithContextAsync
{
    public Task<SpeechletResponse> OnIntentAsync(IntentRequest intentRequest, Session session, Context context)
    {
        throw new System.NotImplementedException();
    }

    public Task<SpeechletResponse> OnLaunchAsync(LaunchRequest launchRequest, Session session, Context context)
    {
        throw new System.NotImplementedException();
    }

    public Task OnSessionStartedAsync(SessionStartedRequest sessionStartedRequest, Session session, Context context)
    {
        throw new System.NotImplementedException();
    }

    public Task OnSessionEndedAsync(SessionEndedRequest sessionEndedRequest, Session session, Context context)
    {
        throw new System.NotImplementedException();
    }
}

Функция Azure:

public static class MyFunction
{
    [FunctionName("MyFunction")]
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
    {
        var speechlet = new MySpeechlet();
        return await speechlet.GetResponseAsync(req);
    }
}

person Matthew Groves    schedule 06.02.2018    source источник
comment
Есть ли в одной из ваших зависимостей Newton v7 в качестве подзависимости?   -  person Mikhail Shilkov    schedule 07.02.2018
comment
Нет, это то, что я имел в виду под NuGet в Visual Studio, он не пытается использовать 7.0.0.0, он использует 9+. Но давайте предположим, что это так, что я мог с этим поделать?   -  person Matthew Groves    schedule 07.02.2018
comment
Немного. В основном вам нужно использовать те же версии зависимостей на данный момент.   -  person Mikhail Shilkov    schedule 07.02.2018
comment
Привет, @MatthewGroves похоже, что проблема связана с пакетом Alexaskills. Если мы используем версию 1.5.2, я могу создать решение. Ошибка возникает, если мы используем версию 1.6.0.   -  person Baskar Rao    schedule 07.02.2018
comment
Похоже, что зависимость v7 получена из пакета Alexaskills. Только что сделал форк из последнего кода. github.com/baskar3078/AlexaSkillsKit.NET/blob /мастер/.nuget/   -  person Baskar Rao    schedule 07.02.2018
comment
Пакет Alexaskills имеет зависимость Newtonsoft.Json (>= 7.0.1), ссылаетесь ли вы на другую версию nuget Newtonsoft.Json 9.0+ в своем проекте? Если да, то как насчет замены на версию 7.0.1?   -  person Leo Liu-MSFT    schedule 07.02.2018
comment
@LeoLiu-MSFT Я не думаю, что какие-либо другие пакеты имеют зависимость от Json, но давайте предположим, что они есть. Как мне это сделать?   -  person Matthew Groves    schedule 07.02.2018


Ответы (1)


Сам узел Azure Function 1.X зависит от Newtonsoft.Json 9 : https://github.com/Azure/azure-functions-host/blob/v1.x/src/WebJobs.Script/packages.config#L60

И это DLL, которая будет загружена, это известная и очень неприятная проблема с функциями azure: https://github.com/Azure/azure-functions-host/issues/992

Если Alexaskills зависит конкретно от 7 и не будет работать с 9, то боюсь, вы застряли, возможно, создайте запрос на включение Alexaskills.

В качестве примечания: если вы создали свою функцию Azure с помощью последних инструментов, ваш проект должен иметь зависимость от Microsoft.NET.Sdk.Functions, которая, по крайней мере, делает эти зависимости явными.

person Shrulik    schedule 08.02.2018