2015-10-06 70 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 :)很高兴听到它! –