如何在Azure Functions中包含对外部程序集的引用

Ste*_* W. 12 azure-functions

我尝试了以下方法:

using System;
using Newtonsoft.Json
using Newtonsoft.Linq

public static void Run(string myEventHubMessage, out string document, TraceWriter log)
{
    log.Verbose($"C# Event Hub trigger function processed a message: {myEventHubMessage}");
    dynamic jsonData = JObject.Parse(myEventHubMessage);
    document = jsonData;
}
Run Code Online (Sandbox Code Playgroud)

当我点击Azure门户中的"保存"按钮时,我得到以下信息:

2016-04-05T21:28:31欢迎您,您现在已连接到日志流服务.2016-04-05T21:28:33.443函数'ProbeEventHubTrigger'的脚本已更改.重装.2016-04-05T21:28:33.443编译函数脚本 2016-04-05T21:28:33.568(2,22):错误CS1002 :; 预计2016-04-05T21:28:33.568(3,22):错误CS1002 :; 预期2016-04-05T21:28:33.568(2,7):错误CS0246:找不到类型或命名空间名称'Newtonsoft'(您是否缺少using指令或程序集引用?)2016-04-05T21: 28:33.568(3,7):错误CS0246:找不到类型或命名空间名称'Newtonsoft'(您是否缺少using指令或程序集引用?)2016-04-05T21:28:33.568(8,24) ):错误CS0103:当前上下文中不存在名称"JObject"2016-04-05T21:28:33.568编译失败.

我也尝试过以下方法:

#r "Newtonsoft.Json"
#r "Newtonsoft.Linq"
using System;

public static void Run(string myEventHubMessage, out string document, TraceWriter log)
{
    log.Verbose($"C# Event Hub trigger function processed a message: {myEventHubMessage}");
    dynamic jsonData = JObject.Parse(myEventHubMessage);
    document = jsonData;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当我点击Azure门户中的"保存"按钮时,我得到以下信息:

2016-04-05T21:35:36欢迎您,您现在已连接到日志流服务.2016-04-05T21:35:38.428函数'ProbeEventHubTrigger'的脚本已更改.重装.2016-04-05T21:35:38.428编译函数脚本 2016-04-05T21:35:38.571(2,1):错误CS0006:无法找到元数据文件'Newtonsoft.Linq'2016-04-05T21:35:38.571(8,24):错误CS0103:名称' JObject'在当前上下文中不存在

从文档中可以看出如何引用这些程序集并不明显.我在一个例子中看到语法是"使用Newtonsoft.Json",但这似乎不适用于门户网站.有什么建议?

Fab*_*nte 21

史蒂夫,

可以使用以下语法添加 .NET Framework程序集和一些"共享"程序集:

#r "AssemblyName"
Run Code Online (Sandbox Code Playgroud)

因此,对于JSON.NET,您可以使用:

#r "Newtonsoft.Json"
Run Code Online (Sandbox Code Playgroud)

一旦参考被添加,那么您可以添加您使用的语句,你会在一个常规的C#项目/文件:

using Newtonsoft.Json;
Run Code Online (Sandbox Code Playgroud)

因此,总而言之,您需要添加对要使用的程序集的引用,并导入该程序集公开的名称空间,以便您可以使用其类型.这与您在Visual Studio中执行的操作类似,您可以在其中添加程序集引用,然后在需要的位置添加using语句.

我希望这有帮助!