gpt4 book ai didi

asp.net-mvc - 使用 Nuget 更新 FluentValidation 后 NinjectValidatorFactory 出现错误

转载 作者:行者123 更新时间:2023-12-02 06:02:01 25 4
gpt4 key购买 nike

我的 NinjectModule 中有以下代码行:

Bind<IValidatorFactory>().To<NinjectValidatorFactory>().InSingletonScope();

这曾经工作正常,但在使用 Nuget 进行大量更新后,我收到以下错误:

Error 3 The type 'Ninject.Web.Mvc.FluentValidation.NinjectValidatorFactory' cannot be used as type parameter 'TImplementation' in the generic type or method 'Ninject.Syntax.IBindingToSyntax.To()'. There is no implicit reference conversion from 'Ninject.Web.Mvc.FluentValidation.NinjectValidatorFactory' to 'FluentValidation.IValidatorFactory'. D:\Projects\Current...\Configuration\MainModule.cs 19 13

Error 4 The type 'FluentValidation.ValidatorFactoryBase' is defined in an assembly that is not referenced. You must add a reference to assembly 'FluentValidation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a82054b837897c66'. D:\Projects\Current...\Configuration\MainModule.cs 19 13

确实,我没有对 FluentValidation Version=2.0.0.0 的引用,但我确实有对 FluentValidation Version=3.4.0.0 的引用。

根据元数据...

  • IValidatorFactoryValidatorFactoryBase 在 Assembly FluentValidation.dll 中定义。
  • NinjectValidatorFactory 在 Assembly Ninject.Web.Mvc.FluentValidation.dll 中定义。

在我的 References 文件夹中,我有 FluentValidation v3.4.0.0 和 Ninject.Web.Mvc.FluentValidation v3.0.0.0。

我不明白为什么编译器认为我需要 FluentValidation Version=2.0.0.0。

我做错了什么,还是 Nuget 包有问题?

最佳答案

问题似乎在于 FluentValidation 曾经是已签名的程序集,但现在是未签名的程序集。然而,Ninject.Web.Mvc.FluentValidation 仍然认为 FluentValidation 已签名。

如果您在 ILSpy 中查看这两个程序集,您会注意到以下内容:

  • Ninject.Web.Mvc.FluentValidation 引用具有以下属性的 FluentValidation:FluentValidation、Version=2.0.0.0、Culture=neutral、PublicKeyToken=a82054b837897c66
  • 但是,最新版本的 FluentValidation 具有不同的属性:FluentValidation、Version=3.4.0.0、Culture=neutral、PublicKeyToken=null

请注意,PublicKeyToken 已更改为 null(无符号)。

希望很快就能解决这个问题。同时,选项是回滚到之前的 FluentValidation 或通过新的 fork 修复引用。

更新

刚刚发布了bug report到 Ninject.Web.Mvc.FluentValidation。希望这将确保问题得到快速解决。

更新2

以防万一有人错过了,下面来自 @dismissile 的评论包含一个很好的解决方案。我尝试了一下,效果非常好。以下是更详细的细微变化:

  1. 删除所有包含“FluentValidation”的 Nuget 包。
  2. 使用 Nuget 安装 FluentValidation-Signed。
  3. 使用 Nuget 安装 FluentValidation.MVC3-Signed(或 MVC4-Signed)
  4. 使用程序包管理器控制台,输入以下内容:

    Install-Package Ninject.Web.Mvc.FluentValidation -IgnoreDependencies

注意:我不需要手动将绑定(bind)重定向添加到我的 Web.config(尽管 Nuget 包会自动添加一个)。

关于asp.net-mvc - 使用 Nuget 更新 FluentValidation 后 NinjectValidatorFactory 出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12015553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com