无法加载文件或程序集,系统找不到指定的文件

时间:2018-02-06 19:19:25

标签: visual-studio json.net nuget azure-functions alexa-skills-kit

我创建了一个Azure功能,作为Alexa技能的后端。

到目前为止我在Visual Studio中所做的一切:

  1. 文件 - >新Azure功能项目
  2. 添加新的Azure功能
  3. 使用NuGet
  4. 添加AlexaSkillsKit.NET
  5. 创建Speechlet实施
  6. 的shell
  7. 将最小代码添加到Azure功能以处理语音提示
  8. 编译时,我收到错误:

      

    无法加载文件或程序集' Newtonsoft.Json,Version = 7.0.0.0,   Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个   依赖。系统找不到指定的文件。

    但根据Visual Studio中的NuGet,它并没有尝试使用7.0.0.0,而是使用了9+。我已经尝试更新和降级JSON.net包。我已经尝试过从头开始清理/重建/重启。

    我认为可能是汇编绑定可能是答案,但Azure Functions项目中没有Web.config或App.config。

    我错过了什么?我如何摆脱这个错误?

    Speechlet代码:

    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);
        }
    }
    

1 个答案:

答案 0 :(得分: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,这至少会使这些依赖项显式化。