如何在Azure函数中引用多个外部程序集?

时间:2016-11-14 09:51:23

标签: c# azure azure-functions azure-logic-apps

直到现在我的Azure功能只依赖于一个外部程序集(Assembly1),并且它运行正常。

但是,最近我们不得不做一些更改,因为现在有两个外部程序集,其中Assembly1引用Assembly2。

我已经部署了Assembly2和Assembly1一样(我的意思是,将.dll复制到Azure功能的“bin”文件夹中,并使用“#r Assembly2”语句将其导入Azure功能。

这给了我以下编译错误 -

  

执行函数时出现异常:Functions.ProcessCsvRows。   Assembly1:无法加载文件或程序集'Assembly2,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其中一个   依赖。该系统找不到指定的文件。功能   开始(Id = dc837832-9303-4ae4-a8ae-133ab531250c)无法找到   程序集'Assembly2,Version = 1.0.0.0,Culture = neutral,   公钥=空”。你错过了一个私人程序集文件吗?

请在下面的代码中找到有关此内容的详细信息 -

#r "Assembly1"
#r "Assembly2"

using System;
using System.Net;
using Newtonsoft.Json;
using System.IO;
using System.Collections.Generic;
using System.Configuration;
using Assembly1.Entities;

public static async Task<object> Run(HttpRequestMessage req, TraceWriter log){
    var jsonContent = await req.Content.ReadAsStringAsync();
    dynamic data = JsonConvert.DeserializeObject(jsonContent.ToString());
    ProcessCsvFileContents_Result _processResponse = await DataProcessor.ProcessCsvFileContents(data.FileContent.ToString(), connectionString, clientId, redirectUrl); // DataProcessor exists in Assembly1 only
    -- response processing code -- 
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Nirman,

应使用其扩展名引用私有程序集(例如.dll)。看起来你遇到了执行失败(编译成功)

请检查以下内容:

  1. 确保assembly1.dll和assembly2.dll都位于bin文件夹中,该函数的文件夹中
  2. 如果在部署文件之前更新了函数引用,则绑定可能会失败。您能否请重新启动功能应用(重启网站)
  3. 希望这有帮助!