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

Method not found: 'Nancy.ErrorPipeline Nancy.ErrorPipeline.op_Addition

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

Method not found: 'Nancy.ErrorPipeline Nancy.ErrorPipeline.op_Addition(Nancy.ErrorPipeline, System.Func`3)'.

base.ApplicationStartup(container, pipelines);

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

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

我该如何解决或解决这个问题?

(注意:我从未使用过 Nancy。这只是查看 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 重建该代码。