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

Tru*_*ill 2 c# autofac nancy

我们通过NuGet将Nancy从v1.2.0更新到1.3.0.根据更改日志,似乎没有与我们的应用程序相关的重大更改.但是我们现在得到运行时错误

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

base.ApplicationStartup(container, pipelines);
Run Code Online (Sandbox Code Playgroud)

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

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

我该如何解决或排除故障?

Jon*_*eet 5

(警告:我从未使用南希.这只是关于在Github看历史的问题.)

看起来+您在1.2.0中使用的运算符签名已从此更改:

public static ErrorPipeline operator +
    (ErrorPipeline pipeline, Func<NancyContext, Exception, Response> func)
Run Code Online (Sandbox Code Playgroud)

在1.3.0中这个:

public static ErrorPipeline operator +
    (ErrorPipeline pipeline, Func<NancyContext, Exception, dynamic> func)
Run Code Online (Sandbox Code Playgroud)

这不是一个向后兼容的变化,至少在二进制级别.就CLR而言,该签名将是

public static ErrorPipeline operator +
    (ErrorPipeline pipeline, Func<NancyContext, Exception, object> func)
Run Code Online (Sandbox Code Playgroud)

...所以任何带有早期签名的二进制文件都找不到它想要的内容.

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