2016-11-25 101 views
1

我們有一個Azure函數,它通過一個私人的Nuget feed來引用外部程序集。Azure函數dll版本不匹配

我們遇到的問題是,我們有兩個不同版本的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的功能使用的版本,但我認爲無論如何我們都會遇到與使用Microsoft.WindowsAzure.Storage相同的問題。

請指教!

回答

2

你是正確的,不支持綁定重定向。運行時對WebJobs SDK和存儲庫有自己的依賴關係,因此傳遞到您的函數中的對象將來自這些版本。我建議刪除您對其他版本的依賴關係並捕捉到我們的版本。請注意,這些庫,你不必添加自己包的參考,你可以通過引用我們在你的功能代碼:

#r "WindowsAzure.Storage" 

你並不需要添加WebJobs SDK類型明確#r引用(例如ICollector<T>) - 運行時會隱式添加該程序集。當然,這隻適用於我們正在編譯的函數代碼,而不是來自外部包的代碼。

未來我們可能會改善這方面的內容,但現在如果您嘗試使用相沖突的版本,那麼現在就會向上遊。

+1

有趣,但仍然乞求問題,爲什麼我們不能從nuget拉該版本。 – davidcarr

+0

如果您使用我們使用的相同(或兼容)版本,您可以從nuget中取出包裹。 – mathewc

+0

這是我們愚蠢的錯誤,我們把函數運行時的版本誤認爲Webjobs dll的版本。運行2.0.0 - 它的行爲正確。我們已經刪除了對這些軟件包的依賴關係,儘管這樣做沒問題。感謝您所有的幫助! – Nosmadas