找不到方法:' Nancy.ErrorPipeline Nancy.ErrorPipeline.op_Addition

时间:2015-10-06 21:45:25

标签: c# autofac nancy

我们通过NuGet将Nancy从v1.2.0更新到1.3.0。根据{{​​3}},似乎没有与我们的申请相关的重大变化。但是我们现在得到运行时错误

  

找不到方法:' Nancy.ErrorPipeline   Nancy.ErrorPipeline.op_Addition(Nancy.ErrorPipeline,   System.Func`3)'

base.ApplicationStartup(container, pipelines);

在我们的CustomBootstrapper中。我们正在使用Nancy.Bootstrappers.Autofac并拥有自定义的IStatusCodeHandler。

我已经清理了packages文件夹以及bin / obj文件夹,并确认在恢复包后只有一个版本的Nancy。

如何解决或解决此问题?

1 个答案:

答案 0 :(得分: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)

...所以任何带有早期签名的二进制文件都无法找到它所寻找的东西。

您的任何依赖项是否也依赖于Nancy,可能是在v1.2.0?基本上,您需要找出期望旧签名的代码段,以便您可以针对1.3.0重建该代码。