2

我尝试在我的 ASP.NET MVC4 项目中设置 Ninject.Web.Mvc.FluentValidation,如下所示:

var ninjectValidatorFactory = new NinjectValidatorFactory(kernel);
//ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new NinjectValidatorFactory(kernel)));
FluentValidationModelValidatorProvider.Configure(x => x.ValidatorFactory = ninjectValidatorFactory);

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

但我收到以下错误:

Error   1   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, ...

Error   2   Cannot implicitly convert type 'Ninject.Web.Mvc.FluentValidation.NinjectValidatorFactory' to 'FluentValidation.IValidatorFactory'. An explicit conversion exists (are you missing a cast?)

我可以看到 Ninject.Web.Mvc.FluentValidation 的 NuGet 包是 3.0.0.0 版,错误告诉我它正在寻找 FluentValidation 的第 2 版以获取其依赖项。

如果我只为 Ninject.Web.Mvc.FluentValidation 安装 NuGet 包,那么它会安装 FluentValidation v2 依赖项而不是版本 3.4.6

但我也可以在这里看到:https ://github.com/ninject/ninject.web.mvc.fluentvalidation/commit/82096d0afd15c41d01c09fd47f4247682261768e 关于正在更新版本 3.4.6 的项目的说明

我目前正在使用 NuGet 将 FluentValidation.MVC4 包添加到我的项目中,然后在它之后添加 Ninject.Web.Mvc.FluentValidation (发现它的依赖项已经存在并且不添加它)。

我可以看到 NuGet 包最后一次发布是在 2013 年 4 月 1 日,但是当我查看项目中的 .nuspec 文件时,它显示

<dependency id="FluentValidation" version="3.2.0.0" />

这个设置有什么我做错了吗?或者我可以通过包管理器控制台来更新依赖版本的方法?

4

2 回答 2

3

更新:这样做的原因是因为使用的是强命名Ninject.Web.Mvc.FluentValidation的签名版本。FluentValidation

David Ebbo 有一篇关于强名称和绑定重定向的好文章 http://blog.davidebbo.com/2011/01/nuget-versioning-part-3-unification-via.html

我仍然没有费心这样做来解决我的问题,NuGet 包只有 1 个类,the NinjectValidatorFactory,所以值得自己实现。


为了暂时解决我的问题,我已将NinjectValidatorFactory课程放入我自己的项目中。在我看来,当前的 NuGet 包在使用 FluentValidation 3.4.6 之前需要进一步更新。

于 2013-04-02T11:25:11.560 回答
3

在包管理器控制台中输入这些代码:

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

-IgnoreDependencies 很重要。

于 2013-10-03T05:30:17.330 回答