Azure函数未找到root / bin中的共享DLL

时间:2016-04-22 12:08:32

标签: c# azure dll azure-functions

根据我在MS论坛上获得的documentationresponse

我应该能够在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)

这是我的文件夹结构:

      • AquasolConnect.Connector.dll
      • AquasolConnect.TankLinkConnector.dll
    • GetTankReadings
      • functions.json
      • run.csx

以下是日志所说的内容:

  

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'无法找到(你错过了使用   指令或程序集引用?)

我做错了什么?

3 个答案:

答案 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());