根据我在MS论坛上获得的documentation和response。
我应该能够在Azure Functions App的根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)
这是我的文件夹结构:
以下是日志所说的内容:
2016-04-22T11:44:56.914(1,1):错误CS0006:元数据文件 ' ../仓/ AquasolConnect.Connector.dll'无法找到
2016-04-22T11:44:56.914(2,1):错误CS0006:元数据文件 ' ../仓/ AquasolConnect.TankLinkConnector.dll'无法找到
2016-04-22T11:44:56.914(5,7):错误CS0246:类型或命名空间 名称' AquasolConnect'无法找到(你错过了使用 指令或程序集引用?)
2016-04-22T11:44:56.914(6,7):错误CS0246:类型或命名空间 名称' AquasolConnect'无法找到(你错过了使用 指令或程序集引用?)
我做错了什么?
答案 0 :(得分:4)
我能够获得编译功能,但只能使用完整的文件引用。
#r "D:\home\site\wwwroot\bin\AquasolConnect.Connector.dll"
#r "D:\home\site\wwwroot\bin\AquasolConnect.TankLinkConnector.dll"
但是当函数运行时我得到了:
无法找到程序集' AquasolConnect.TankLinkConnector, Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。你是 缺少私人程序集文件?
更好地回答任何人?
答案 1 :(得分:2)
对我来说最重要的是将bin文件夹放在与run.csx相同的级别,然后引用它没有路径,例如:
#r "MyAssembly.dll"
答案 2 :(得分:0)
由于声誉不佳,我无法发表评论,因此这个'答案'。 我把我的自定义DLL放在与Andrew类似的文件夹结构的bin文件夹下。但后来遇到了同样的问题:
2016-06-28T10:13:24.804 Unable to find assembly 'FunctionPOCLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Are you missing a private assembly file?2016-06-28T10:13:24.804 Function completed (Failure, Id=ac19dc2b-b5f1-4ffe-a290-747266b83935) 2016-06-28T10:13:24.835 Exception while executing function: Functions.QueueTriggerCSharp1. mscorlib: Exception has been thrown by the target of an invocation. ƒ-QueueTriggerCSharp1#ℛ*35133685-d255-4835-8282-acb5c5d9fca5#9-0: Could not load file or assembly 'FunctionPOCLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
在我的代码中,我将输入值解析为POCO,这是在我的自定义程序集中定义的。
var rc = Newtonsoft.Json.JsonConvert.DeserializeObject(myQueueItem); log.Info(rc.PropGuid.ToString());