我创建了一个Azure功能,作为Alexa技能的后端。
到目前为止我在Visual Studio中所做的一切:
Speechlet
实施编译时,我收到错误:
无法加载文件或程序集' 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);
}
}
答案 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,这至少会使这些依赖项显式化。