我们通过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。
如何解决或解决此问题?
答案 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重建该代码。