Azure Functions dll版本不匹配

时间:2016-11-25 10:47:18

标签: azure azure-functions

我们有一个Azure功能,它通过私有Nuget源引用外部程序集。

我们遇到的问题是我们有两个不同版本的Microsoft.Azure.WebJobs.dll - 一个是我们的nuget包的依赖项,另一个我假设是由我们提供的运行时。

 error CS1503: Argument 2: cannot convert from 'Microsoft.Azure.WebJobs.ICollector<Microsoft.WindowsAzure.Storage.Table.ITableEntity> [D:\Program Files (x86)\SiteExtensions\Functions\1.0.10635\bin\Microsoft.Azure.WebJobs.dll]' to 'Microsoft.Azure.WebJobs.ICollector<Microsoft.WindowsAzure.Storage.Table.ITableEntity> 

我发现这个问题表明不支持绑定重定向:

Azure Functions binding redirect

我们可以尝试删除对该库的依赖,或者我们可以匹配Azure Functions使用的版本,但我认为无论如何我们都会遇到与使用Microsoft.WindowsAzure.Storage相同的问题。

请指教!

1 个答案:

答案 0 :(得分:2)

您是正确的,不支持绑定重定向。运行时在WebJobs SDK和存储库上有自己的依赖关系,因此传递给函数的对象将来自这些版本。我建议删除其他版本的依赖项并捕捉到我们的版本。请注意,对于这些库,您不必添加自己的包引用,可以通过以下方式在功能代码中引用我们的包:

#r "WindowsAzure.Storage"

您无需为WebJobs SDK类型添加显式#r引用(例如ICollector<T>) - 运行时会隐式添加该程序集。当然,这仅适用于我们为您编译的功能代码,而不适用于来自外部软件包的代码。

将来我们可能会改进这方面的事情,但是现在如果你试图使用冲突的版本,你将会游泳。