12

我尝试了以下方法:

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

当我点击 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 中不存在。

我还尝试了以下方法:

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

在这种情况下,当我点击 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”,但这似乎在门户中不起作用。有什么建议么?

4

1 回答 1

23

史蒂夫,

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

#r "AssemblyName"

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

#r "Newtonsoft.Json"

添加引用,您可以像在常规 C# 项目/文件中一样添加 using 语句:

using Newtonsoft.Json;

因此,总而言之,您需要添加对要使用的程序集的引用,导入该程序集公开的命名空间,以便您可以使用它的类型。这类似于您在 Visual Studio 中执行的操作,您可以在其中添加程序集引用,然后在需要它们的地方添加 using 语句。

我希望这有帮助!

于 2016-04-05T22:09:12.177 回答