5

根据我在 MS 论坛上得到的文档回复。

我应该能够在我的 Azure Functions 应用程序的根 bin 文件夹中引用我自己的库。我将在多个函数之间共享这些库。

这是我的代码的相关部分:

#r "../bin/AquasolConnect.Connector.dll"
#r "../bin/AquasolConnect.TankLinkConnector.dll"

using System;
using AquasolConnect.Connector;
using AquasolConnect.TankLinkConnector;

public static void Run(TimerInfo GetTankReadingsTimer, TraceWriter log)

这是我的文件夹结构:

    • 垃圾桶
      • AquasolConnect.Connector.dll
      • AquasolConnect.TankLinkConnector.dll
    • GetTankReadings
      • 函数.json
      • 运行.csx

这是日志所说的:

2016-04-22T11:44:56.914 (1,1):错误 CS0006:找不到元数据文件“../bin/AquasolConnect.Connector.dll”

2016-04-22T11:44:56.914 (2,1):错误 CS0006:找不到元数据文件“../bin/AquasolConnect.TankLinkConnector.dll”

2016-04-22T11:44:56.914 (5,7):错误 CS0246:找不到类型或命名空间名称“AquasolConnect”(您是否缺少 using 指令或程序集引用?)

2016-04-22T11:44:56.914 (6,7):错误 CS0246:找不到类型或命名空间名称“AquasolConnect”(您是否缺少 using 指令或程序集引用?)

我究竟做错了什么?

4

3 回答 3

4

我能够编译函数,但只能使用完整的文件参考。

#r "D:\home\site\wwwroot\bin\AquasolConnect.Connector.dll"  
#r "D:\home\site\wwwroot\bin\AquasolConnect.TankLinkConnector.dll" 

但是当函数运行时,我得到了:

找不到程序集“AquasolConnect.TankLinkConnector,版本=1.0.0.0,文化=中性,PublicKeyToken=null”。您是否缺少私有程序集文件?

更好地回答任何人?

于 2016-04-25T11:14:35.647 回答
3

最终为我工作的是将 bin 文件夹放在与 run.csx 相同的级别,然后在没有路径的情况下引用它,例如:

#r "MyAssembly.dll"
于 2016-11-10T10:49:44.413 回答
0

由于声誉低下,我无法发表评论,因此改为使用此“答案”。我已将我的自定义 dll 放在与 Andrew 类似的文件夹结构的 bin 文件夹下。但随后面临同样的问题:

2016-06-28T10:13:24.804 找不到程序集“FunctionPOCLib,版本=1.0.0.0,文化=中性,PublicKeyToken=null”。是否缺少私有程序集文件?2016-06-28T10:13:24.804 功能完成(失败,Id=ac19dc2b-b5f1-4ffe-a290-747266b83935)
2016-06-28T10:13:24.835 执行函数时出现异常:Functions.QueueTriggerCSharp1。mscorlib:调用的目标已引发异常。ƒ-QueueTriggerCSharp1#ℛ*35133685-d255-4835-8282-acb5c5d9fca5#9-0:无法加载文件或程序集“FunctionPOCLib,版本=1.0.0.0,文化=中性,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。

在我的代码中,我将输入值解析为在我的自定义程序集中定义的 POCO。

var rc = Newtonsoft.Json.JsonConvert.DeserializeObject(myQueueItem);
log.Info(rc.PropGuid.ToString());
于 2016-06-28T10:25:52.707 回答