无法将Microsoft.Azure.Devices命名空间添加到Azure功能run.csx

时间:2017-10-28 16:03:30

标签: c# azure azure-functions

我有一个Azure功能,我需要通过IoT Hub将消息发送回我的设备。 每次我尝试添加声明:

using Microsoft.Azure.Devices;

我收到以下错误:

  

run.csx(11,23):错误CS0234:类型或命名空间名称'设备'名称空间中不存在Microsoft.Azure' (你错过了一个程序集引用吗?)

但奇怪的是,如错误所示,如果我只是去using Microsoft.Azure,则没有编译错误。

所以我尝试使用带有我的代码的设备,例如static Devices.ServiceClient client;,但同样的错误。

我也尝试过使用#r "Microsoft.Azure.Devices,但这也不起作用。

我尝试完全创建一个新的Function App服务,但同样的错误一直在弹出。

我的project.json文件看起来像这样:

{
  "frameworks": {
    "net47":{
      "dependencies": {
        "Microsoft.Azure.Devices": "1.4.1"
      }
    }
  }
}

我也尝试使用net46

我的应用程序的小描述:

所以我的函数应该由ServiceBusTopic触发,有一个BlobStorage作为输入。

我不知道如果没有添加此命名空间,我将如何将数据发送回我的设备。

1 个答案:

答案 0 :(得分:0)

以下是使用 Microsoft.Azure.Devices nuget包的工作示例。触发器是 ServiceBusQueue blobName 是BrokeredMessage的应用程序属性。

run.csx:

using System;
using System.Text;
using System.Configuration;
using System.Threading.Tasks;
using Microsoft.Azure.Devices;

public static async Task Run(string inputMessage, string inputBlob, TraceWriter log)
{
    log.Info($"C# ServiceBus queue trigger function processed message: {inputMessage}");
    log.Info($"Blob:\n{inputBlob}");


    string deviceId = "Device10";
    var c2dmsg = new Microsoft.Azure.Devices.Message(Encoding.ASCII.GetBytes(inputMessage));

    // create proxy
    string connectionString = ConfigurationManager.AppSettings["myIoTHub2"];
    var client = ServiceClient.CreateFromConnectionString(connectionString);

    // send AMQP message
    await client.SendAsync(deviceId, c2dmsg);

    await client.CloseAsync();
}

function.json:

    {
      "bindings": [
      {
        "name": "inputMessage",
        "type": "serviceBusTrigger",
        "direction": "in",
        "queueName": "function",
        "connection": "myServiceBus",
        "accessRights": "Manage"
      },
      {
        "type": "blob",
        "name": "inputBlob",
        "path": "afstates/{Properties.blobName}",
        "connection": "myStorage",
        "direction": "in"
      }
      ],
      "disabled": false
  }

project.json:

{
  "frameworks": {
  "net46":{
    "dependencies": {
      "Microsoft.Azure.Devices": "1.4.1"
      }
    }
  }
}

请尝试以下步骤:

  • 删除文件 project.lock.json
  • 使用 net46 依赖关系
  • 按下保存按钮恢复nuget包。

观察日志进度。