dev*_*xer 9 asp.net-mvc ninject fluentvalidation asp.net-mvc-3
我的NinjectModule中有以下代码行:
Bind<IValidatorFactory>().To<NinjectValidatorFactory>().InSingletonScope();
Run Code Online (Sandbox Code Playgroud)
这曾经工作正常,但在使用Nuget进行一系列更新后,我收到以下错误:
错误3类型'Ninject.Web.Mvc.FluentValidation.NinjectValidatorFactory'不能在泛型类型或方法'Ninject.Syntax.IBindingToSyntax.To()'中用作类型参数'TImplementation'.没有从'Ninject.Web.Mvc.FluentValidation.NinjectValidatorFactory'到'FluentValidation.IValidatorFactory'的隐式引用转换.D:\ Projects\Current ...\Configuration\MainModule.cs 19 13
错误4"FluentValidation.ValidatorFactoryBase"类型在未引用的程序集中定义.您必须添加对程序集'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.
根据元数据......
IValidatorFactory并ValidatorFactoryBase在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包的问题?
dev*_*xer 11
看起来问题是FluentValidation曾经是一个有符号的程序集,但现在是一个无符号程序集.但是,Ninject.Web.Mvc.FluentValidation仍然认为FluentValidation已签名.
如果你在ILSpy中查看这两个程序集,你会注意到以下内容:
请注意,PublicKeyToken已更改为null(无符号).
希望很快就会解决这个问题.同时,选项是回滚到之前的FluentValidation或通过新的fork修复引用.
更新
刚刚向Ninject.Web.Mvc.FluentValidation 发布了一个错误报告.希望这可以确保快速解决问题.
更新2
万一有人错过了,下面@dismissile的评论包含一个很好的解决方案.我试一试,它几乎可以工作.这里有一个细微的变化,更详细:
使用Package Manager控制台,输入以下内容:
Install-Package Ninject.Web.Mvc.FluentValidation -IgnoreDependencies
Run Code Online (Sandbox Code Playgroud)注意:我不需要手动将绑定重定向添加到我的Web.config中(尽管Nuget包自动添加了一个).
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |