2015-10-06 68 views
2

我們通過NuGet更新了Nancy從v1.2.0到1.3.0。根據changelog,似乎沒有發生與我們的應用程序相關的重大更改。然而,我們現在得到的運行時錯誤,沒有發現找不到方法:'Nancy.ErrorPipeline Nancy.ErrorPipeline.op_Addition

方法: 'Nancy.ErrorPipeline Nancy.ErrorPipeline.op_Addition(Nancy.ErrorPipeline, System.Func`3)'。

base.ApplicationStartup(container, pipelines); 
我們CustomBootstrapper

。我們使用Nancy.Bootstrappers.Autofac並且有一個自定義的IStatusCodeHandler。

我已經清除了包文件夾以及bin/obj文件夾,並且驗證了包還原後只有一個Nancy版本。

我該如何解決或排除故障?

+1

現在在v1.3.0的更改日誌中將其列爲* OnError管道中的內容協商* –

回答

5

(警告:我從來沒有用過南希這僅僅是一個尋找在Github上的歷史問題。)

它看起來像你使用此在1.2.0改變了+運營商簽名:

public static ErrorPipeline operator + 
    (ErrorPipeline pipeline, Func<NancyContext, Exception, Response> func) 

這在1.3.0:

public static ErrorPipeline operator + 
    (ErrorPipeline pipeline, Func<NancyContext, Exception, dynamic> func) 

這不是一個向後兼容的變化,至少是在二進制級別。至於CLR而言,該簽名會

public static ErrorPipeline operator + 
    (ErrorPipeline pipeline, Func<NancyContext, Exception, object> func) 

...所以與早前簽名參考任何二進制將無法找到它尋找。

你的任何依賴關係還取決於南希,可能在v1.2.0?基本上,你需要找出哪一段代碼需要舊簽名,所以你可以用1.3.0重新編譯該代碼。

+0

看起來像這是問題所在。我們通過引用Nancy 1.2的內部NuGet源導入了另一個內部庫。我錯過了。 – TrueWill

+0

確認 - 在其他圖書館更新Nancy解決了該問題。 – TrueWill

+0

@TrueWill:Hooray :)很高興聽到它! –