错误CS0006:找不到元数据文件'MongoDB'

时间:2019-01-11 10:03:39

标签: c# azure azure-functions azure-cosmosdb azure-cosmosdb-mongoapi

我创建了一个Azure Function,它在`run.csx'中具有以下代码

using System;
using System.Runtime.Serialization;
using System.ServiceModel.Description;
using MongoDB.Bson.IO;
using MongoDB.Bson;
using MongoDB;
using MongoDB.Driver;
using System.Security.Authentication;
using System.Text;
using Newtonsoft.Json;

public static void Run(string myIoTHubMessage, ILogger log)
{
    log.LogInformation($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}");
 }

我正在遵循Project.json

  {
    "frameworks": {
    "net46":{
    "dependencies": {
      "Newtonsoft.Json": "10.0.3",
      "System.ServiceModel.Primitives":"4.4.0",
      "MongoDB.Bson": "2.4.0",
      "MongoDB.Driver": "2.4.0",
      "MongoDB.Driver.Core": "2.4.0"
    }
  }
 }
}

运行azure函数时出现错误

  

2019-01-11T10:01:14.846 [错误] run.csx(5,27):错误CS0234:类型或名称空间名称'Description'在名称空间'System.ServiceModel'中不存在(是否丢失)组装参考?)

     

2019-01-11T10:01:15.108 [Error] run.csx(6,7):错误CS0246:找不到类型或名称空间名称'MongoDB'(您是否缺少using指令或程序集引用?)

我什至尝试添加如下所示的名称空间,但是没有运气

#r "Newtonsoft.Json"
#r "System.Xml"
#r "System.Xml.Linq" 
#r "MongoDB"

1 个答案:

答案 0 :(得分:1)

这可能是由于功能运行时的差异造成的。

project.json用于〜1运行时的函数,其中代码以.NET Framework为目标,而您创建的函数在〜2运行时在.NET Core env上运行。当我们创建一个新的Function应用程序时,默认情况下,其运行时默认设置为〜2。

因此解决方案很简单,删除Function应用程序中的现有功能,并将Function运行时版本更改为〜1(在门户网站中找到,平台功能> Function app设置)。然后,您可以按照上述步骤重新创建IoT中心(事件中心)触发器,这次应该可以进行操作了。

要使用Function 2.0,请使用function.proj安装软件包。

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="<packageName>" Version="<version>"/>
    </ItemGroup>
</Project>